<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://calcwiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nbfreeh</id>
	<title>计算器百科 - 用户贡献 [zh]</title>
	<link rel="self" type="application/atom+xml" href="https://calcwiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nbfreeh"/>
	<link rel="alternate" type="text/html" href="https://calcwiki.org/Special:Contributions/Nbfreeh"/>
	<updated>2026-04-06T09:03:28Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://calcwiki.org/index.php?title=TI-81&amp;diff=8345</id>
		<title>TI-81</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=TI-81&amp;diff=8345"/>
		<updated>2017-04-10T13:01:45Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​/* 特性 */ 未见此条，enwiki亦无说明&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TI-81是德州仪器最早推出的一批图形计算器，于1990年发布，1996年停产。&lt;br /&gt;
&lt;br /&gt;
这部计算器上的很多特征，包括按键布局和96x31的显示分辨率，都被后来的诸如[[TI-84系列|TI-84]]等计算器所沿用。&lt;br /&gt;
{{Infobox calculator&lt;br /&gt;
| name         =TI-81&lt;br /&gt;
| image        =TI-81_Calculator_on_Graph_Screen.jpg&lt;br /&gt;
| caption      =TI-81&lt;br /&gt;
| entry        = 线性输入，线性输出&lt;br /&gt;
| manufacturer = 德州仪器&lt;br /&gt;
| introduced   = 1990&lt;br /&gt;
| discontinued = 1996&lt;br /&gt;
| processor    = 东芝T6A49/T6A43（早期），东芝T84C00（后期），Z80架构&lt;br /&gt;
| frequency    = 2 MHz&lt;br /&gt;
| display_type = 单色点阵液晶显示&lt;br /&gt;
| display_size = 96*64像素（16*8字符）&lt;br /&gt;
| memory_user  = 2400字节 RAM&lt;br /&gt;
| supply = 4节AAA电池&amp;lt;br&amp;gt;1节CR1616/1620&lt;br /&gt;
| prog_lang= [[TI-BASIC]]，机器码编程（经由系统漏洞执行）&lt;br /&gt;
| precision= 13位&lt;br /&gt;
| successor= TI-82&lt;br /&gt;
| dimensions =21(H) x 80(W) x 172(D) mm&lt;br /&gt;
| weight= 168克&lt;br /&gt;
}}&lt;br /&gt;
==特性==&lt;br /&gt;
TI-81使用的是东芝T6A49/T6A43/T84C00处理器&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite web|url=http://datamath.org/Graphing/TI-81.htm|title=DATAMATH: TI-81 (1991)|last=Woerner|first=Joerg|date=2003-01-19|accessdate=16 February 2017}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
，与德州仪器后期的Z80系列计算器产品（如[[TI-84系列|TI-84]]）架构相同，但频率只有2MHz（后期的其他德州仪器Z80系列计算器的频率为6/15MHz）。&lt;br /&gt;
&lt;br /&gt;
TI-81开始使用名为Equation Operation System（EOS）的用户界面，这一用户界面被德州仪器后期的所有Z80系列计算器，以及[[TI-36X Pro]]等部分函数计算器延续了下来。&lt;br /&gt;
&lt;br /&gt;
TI-81具有函数绘图，参数方程绘图，简易图形绘制，基础运算，最大6*6的矩阵运算，以及TI-BASIC编程等功能。&lt;br /&gt;
&lt;br /&gt;
==程序==&lt;br /&gt;
TI-81支持[[TI-BASIC]]语言，用户可在机上直接编辑和运行TI-BASIC程序。&lt;br /&gt;
&lt;br /&gt;
TI-81并没有对汇编语言或机器码编程的直接支持。但是，由于一个系统漏洞的存在，在手动输入一串命令并重启计算器之后，用户就可以通过在机上直接输入16进制机器码的方式进行机器码编程。&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite web|url=http://www.ticalc.org/archives/news/articles/14/145/145220.html|title=User Machine Code Execution on TI-81 Becomes a Reality|last=Evans|first=Travis|date=17 August 2009|accessdate=16 February 2017}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
==供电==&lt;br /&gt;
TI-81使用4节AAA电池进行供电，以及一节CR1616/1620纽扣电池作为“记忆保护电池”，用以保护内存中的数据在更换主电池或主电池电力耗尽的情况下不会丢失。&lt;br /&gt;
&lt;br /&gt;
早期的TI-81（1990/1991年版本）没有记忆保护电池。&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite web|url=http://datamath.org/Graphing/TI-81_2.htm|title=Datamath:TI-81 Info|accessdate=16 February 2017}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
这要求在更换计算器电池时，必须逐个更换，而且速度要快，否则会导致内存数据丢失。&lt;br /&gt;
==参见==&lt;br /&gt;
[[TI图形计算器对比]]&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
==外部链接==&lt;br /&gt;
[http://www.ticalc.org/archives/news/articles/14/145/145220.html 机器码执行漏洞]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{{TI-Calcs}}&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-7400G&amp;diff=8344</id>
		<title>Fx-7400G</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-7400G&amp;diff=8344"/>
		<updated>2017-04-10T09:11:12Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:CASIO FX-7400GII FROM CalcWiki2.jpg|缩略图|fx-7400GII的主界面]]&lt;br /&gt;
卡西欧fx-7400系列是卡西欧推出的一系列图形计算器。在卡西欧的图形计算机产品线中，7400系列为基础级别，即拥有最少的功能与较低的硬件配置。&lt;br /&gt;
==功能==&lt;br /&gt;
fx-7400系列计算器具有如下功能：&lt;br /&gt;
*常规运算（含复数、数值积分、数值微分）&lt;br /&gt;
*函数列表&lt;br /&gt;
*概率/统计（含统计图绘制功能）&lt;br /&gt;
*方程（组）求解&lt;br /&gt;
*编程功能&lt;br /&gt;
==型号==&lt;br /&gt;
===fx-7400G===&lt;br /&gt;
===fx-7400GII===&lt;br /&gt;
==程序==&lt;br /&gt;
fx-7400G内置有类BASIC语言，可以用于编写简单的程序。&lt;br /&gt;
==联机==&lt;br /&gt;
fx-7400G的3pin接口可以和其他计算器通信，包括fx-9860G（II）系列和一些更早期的计算器（如fx-7400G等）。在与CFX/7400G系列计算器通信的时候，通信速率为9600bps，和9860/9750系列计算器通信时，速率为115200bps。&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-7400G&amp;diff=8343</id>
		<title>Fx-7400G</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-7400G&amp;diff=8343"/>
		<updated>2017-04-10T08:36:11Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​创建页面，内容为“卡西欧fx-7400系列是卡西欧推出的一系列图形计算器。在卡西欧的图形计算机产品线中，7400系列为基础级别，即拥有最少的功...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;卡西欧fx-7400系列是卡西欧推出的一系列图形计算器。在卡西欧的图形计算机产品线中，7400系列为基础级别，即拥有最少的功能与较低的硬件配置。&lt;br /&gt;
==功能==&lt;br /&gt;
fx-7400系列计算器具有如下功能：&lt;br /&gt;
*常规运算（含复数、数值积分、数值微分）&lt;br /&gt;
*函数列表&lt;br /&gt;
*概率/统计（含统计图绘制功能）&lt;br /&gt;
*方程（组）求解&lt;br /&gt;
*编程功能&lt;br /&gt;
==型号==&lt;br /&gt;
===fx-7400G===&lt;br /&gt;
===fx-7400GII===&lt;br /&gt;
==程序==&lt;br /&gt;
fx-7400G内置有类BASIC语言，可以用于编写简单的程序。&lt;br /&gt;
==联机==&lt;br /&gt;
fx-7400G的3pin接口可以和其他计算器通信，包括fx-9860G（II）系列和一些更早期的计算器（如fx-7400G等）。在与CFX/7400G系列计算器通信的时候，通信速率为9600bps，和9860/9750系列计算器通信时，速率为115200bps。&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-991EX&amp;diff=8266</id>
		<title>Fx-991EX</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-991EX&amp;diff=8266"/>
		<updated>2017-01-02T07:22:42Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = 卡西欧 fx-991EX&lt;br /&gt;
| image        = Fx-991EX.jpg&lt;br /&gt;
| caption      = &lt;br /&gt;
| type         = 科学计算器&lt;br /&gt;
| entry        = &lt;br /&gt;
| invent-date  = &lt;br /&gt;
| invent-name  = [[卡西欧]]&lt;br /&gt;
| conn1        = &lt;br /&gt;
| via1_1       = &lt;br /&gt;
| designfirm   = &lt;br /&gt;
| manufacturer = &lt;br /&gt;
| introduced   = &lt;br /&gt;
| discontinued = &lt;br /&gt;
| cost         = &lt;br /&gt;
| processor    = &lt;br /&gt;
| prog_lang    = &lt;br /&gt;
| frequency    = &lt;br /&gt;
| precision    = &lt;br /&gt;
| display_type = 液晶显示屏&lt;br /&gt;
| display_size = 192×63&lt;br /&gt;
| memory_user  = &lt;br /&gt;
| memory_rom   = &lt;br /&gt;
| memory_extern= &lt;br /&gt;
| memory_data  = &lt;br /&gt;
| memory_step  =&lt;br /&gt;
| connection   = &lt;br /&gt;
| ports        = &lt;br /&gt;
| supply       = 内置太阳能电池和纽扣电池LR44*1&lt;br /&gt;
| power        = &lt;br /&gt;
| weight       = 0.09 (kg)&lt;br /&gt;
| dimensions   = 77*165.5*11.1&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Fx-991EX&#039;&#039;&#039;是卡西欧发布的面向英语用户的一款科学函数计算器，其前身为Fx-991ES PLUS。其采用了[[卡西欧Classwiz系列]]的家族设计，例如拥有高分辨率显示屏、特殊纹饰的面板。由于该机型在使用英语的国家与地区广泛发售，其被部分爱好者称之为“世界旗舰”&lt;br /&gt;
==电池供应==&lt;br /&gt;
使用内置太阳能电池（使用太阳能电池供电时屏幕右上角将有一个太阳状标志）和一节LR44按钮电池，在一般使用状况下，其可使用2年。&lt;br /&gt;
==功能==&lt;br /&gt;
*卡西欧fx-991EX拥有12个模式，分别是一般计算、复数、基数、矩阵、向量、统计、分布计算、电子表格、函数表格、方程、不等式、比例。&lt;br /&gt;
*拥有科学常数、公制转换、元素周期表、QR码生成功能&lt;br /&gt;
*自然书写显示&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
[https://edu.casio.com/products/cwiz/fx991ex/ 卡西欧官网对于FX-991EX的介绍]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Template:CASIO-Calcs}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Casio]]&lt;br /&gt;
[[Category:计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-991EX&amp;diff=8265</id>
		<title>Fx-991EX</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-991EX&amp;diff=8265"/>
		<updated>2017-01-02T07:18:44Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​新条目&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Fx-991EX&#039;&#039;&#039;是卡西欧发布的面向英语用户的一款科学函数计算器，其前身为Fx-991ES PLUS。其采用了[[卡西欧Classwiz系列]]的家族设计，例如拥有高分辨率显示屏、特殊纹饰的面板。由于该机型在使用英语的国家与地区广泛发售，其被部分爱好者称之为“世界旗舰”&lt;br /&gt;
==电池供应==&lt;br /&gt;
使用内置太阳能电池（使用太阳能电池供电时屏幕右上角将有一个太阳状标志）和一节LR44按钮电池，在一般使用状况下，其可使用2年。&lt;br /&gt;
==功能==&lt;br /&gt;
*卡西欧fx-991EX拥有12个模式，分别是一般计算、复数、基数、矩阵、向量、统计、分布计算、电子表格、函数表格、方程、不等式、比例。&lt;br /&gt;
*拥有科学常数、公制转换、元素周期表、QR码生成功能&lt;br /&gt;
*自然书写显示&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
[https://edu.casio.com/products/cwiz/fx991ex/ 卡西欧官网对于FX-991EX的介绍]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Template:CASIO-Calcs}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Casio]]&lt;br /&gt;
[[Category:计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-290&amp;diff=8264</id>
		<title>Fx-290</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-290&amp;diff=8264"/>
		<updated>2017-01-02T07:09:07Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = 卡西歐 fx-290&lt;br /&gt;
| image        =&lt;br /&gt;
| caption      = &lt;br /&gt;
| type         = [[科学计算器]]&lt;br /&gt;
| entry        = [[Calculator_input_methods#Mathematical_display|V.P.A.M.]]&lt;br /&gt;
| invent-date  = &lt;br /&gt;
| invent-name  = &lt;br /&gt;
| conn1        = &lt;br /&gt;
| via1_1       =&lt;br /&gt;
| designfirm   =&lt;br /&gt;
| manufacturer = &lt;br /&gt;
| introduced   =&lt;br /&gt;
| discontinued = &lt;br /&gt;
| cost         = &lt;br /&gt;
| processor    = &lt;br /&gt;
| prog_lang    = &lt;br /&gt;
| frequency    = &lt;br /&gt;
| precision    = 15位&lt;br /&gt;
| display_type = [[Liquid crystal display]]&lt;br /&gt;
| display_size = &lt;br /&gt;
| memory_user  = &lt;br /&gt;
| memory_rom   = &lt;br /&gt;
| memory_extern= &lt;br /&gt;
| memory_data  = &lt;br /&gt;
| memory_step  = &lt;br /&gt;
| connection   = &lt;br /&gt;
| ports        = &lt;br /&gt;
&lt;br /&gt;
| supply       =内置太阳能电池；按钮电池&lt;br /&gt;
&lt;br /&gt;
| power        = &lt;br /&gt;
| weight       = &lt;br /&gt;
| dimensions   = 19.5*78*155（mm）&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;卡西歐 fx-290&#039;&#039;&#039;是[[卡西欧]]公司发布的[[科学计算器|科学函数计算器]]。这个型号的计算器目前只在[[日本]]有售，其型号虽未标注为MS系列，但实则与新MS系列一致。&lt;br /&gt;
==功能==&lt;br /&gt;
卡西歐 fx-290的功能在卡西欧的科学计算器中不算多，但亦也不少。其拥有COMP、SD、REG三个模式运算（SD、REG是在MS型号被拆分的统计运算），有conversation（单位换算），但较旗舰机型[[卡西欧 fx-991MS]]缺少了CONSTANT（科学常数）功能。但卡西歐 fx-290拥有RanInt功能，是[[卡西欧 fx-991MS]]不具备的。因为卡西歐 fx-290是新MS系列，故拥有屏幕对比度调节与关机画面功能。&lt;br /&gt;
==自检==&lt;br /&gt;
由SHIFT+7+ON进入，自检顺序为屏幕检查、系统版本、按键检查、屏幕对比度调节。&lt;br /&gt;
==参考==&lt;br /&gt;
#卡西欧 fx-991MS用户说明书（日语）&lt;br /&gt;
#[http://tieba.baidu.com/p/3840847643 【测评】fx-290 &amp;amp; fx-991MS PLUS 多图详细测评]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Template:CASIO-Calcs}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Casio]]&lt;br /&gt;
[[Category:计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-JP900&amp;diff=8263</id>
		<title>Fx-JP900</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-JP900&amp;diff=8263"/>
		<updated>2017-01-02T07:08:35Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = 卡西欧 fx-JP900&lt;br /&gt;
| image        = Casio fx-JP900.jpg &lt;br /&gt;
| caption      = &lt;br /&gt;
| type         = 科学计算器&lt;br /&gt;
| entry        = &lt;br /&gt;
| invent-date  = 2014年12月5日&lt;br /&gt;
| invent-name  = [[卡西欧]]&lt;br /&gt;
| conn1        = &lt;br /&gt;
| via1_1       = &lt;br /&gt;
| designfirm   = &lt;br /&gt;
| manufacturer = &lt;br /&gt;
| introduced   = &lt;br /&gt;
| discontinued = &lt;br /&gt;
| cost         = ￥4169（日元）&lt;br /&gt;
| processor    = &lt;br /&gt;
| prog_lang    = &lt;br /&gt;
| frequency    = &lt;br /&gt;
| precision    = &lt;br /&gt;
| display_type = 液晶显示屏&lt;br /&gt;
| display_size = 192×63&lt;br /&gt;
| memory_user  = &lt;br /&gt;
| memory_rom   = &lt;br /&gt;
| memory_extern= &lt;br /&gt;
| memory_data  = &lt;br /&gt;
| memory_step  =&lt;br /&gt;
| connection   = &lt;br /&gt;
| ports        = &lt;br /&gt;
| supply       = 内置太阳能电池和纽扣电池LR44*1&lt;br /&gt;
| power        = &lt;br /&gt;
| weight       = 0.09 (kg)&lt;br /&gt;
| dimensions   = 77*165.5*11.1&lt;br /&gt;
}}&lt;br /&gt;
卡西欧 Fx-JP900是卡西欧公司在2014年12月5日在日本发布的面向日文用户的科学函数计算器。这个型号的计算器用于取代原先的型号卡西歐 fx-995ES PLUS，并在原型号上进行改进，增加了功能，提升了屏幕分辨率，将系统界面全部变为日文（亦可以使用英文显示）和图形化，以方便用户使用。因为其功能强大，因此在计算器圈子被称为“最强函数机”，“宇宙第0函数机”。&lt;br /&gt;
==外形==&lt;br /&gt;
卡西欧 fx-991CNX采用了与所有卡西欧CLASSWIZ系列相同的外形，其正面为黑色，机身背面和保护盖为纯白色，正面PS塑料材质面板上带有花纹。&lt;br /&gt;
&lt;br /&gt;
==电池供应==&lt;br /&gt;
使用内置太阳能电池（使用太阳能电池供电时屏幕右上角将有一个太阳状标志）和按钮电池LR44*1，&amp;lt;ref&amp;gt;在每天操作一小时情况下，电池大概寿命为两年&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==功能==&lt;br /&gt;
*卡西欧fx-JP900拥有十个模式，分别为基本计算、复数计算、统计计算、基数运算、方程式运算、矩阵计算、通过函数生成数学表格、向量计算、不等式计算、比例式计算、表格计算、分布计算。&lt;br /&gt;
&lt;br /&gt;
*拥有科学常数、公制转换、元素周期表、QR码生成功能&lt;br /&gt;
*自然书写显示&lt;br /&gt;
&lt;br /&gt;
==参考==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Template:CASIO-Calcs}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Casio]]&lt;br /&gt;
[[Category:计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-991CN_X&amp;diff=8262</id>
		<title>Fx-991CN X</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-991CN_X&amp;diff=8262"/>
		<updated>2017-01-02T07:08:02Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = 卡西欧 fx-991CNX&lt;br /&gt;
| image        = CASIO fx-991CNX.jpg&lt;br /&gt;
| caption      = &lt;br /&gt;
| type         = 科学计算器&lt;br /&gt;
| entry        = &lt;br /&gt;
| invent-date  = 2014年6月24日&lt;br /&gt;
| invent-name  = [[卡西欧]]&lt;br /&gt;
| conn1        = &lt;br /&gt;
| via1_1       = &lt;br /&gt;
| designfirm   = &lt;br /&gt;
| manufacturer = &lt;br /&gt;
| introduced   = &lt;br /&gt;
| discontinued = &lt;br /&gt;
| cost         = 168元（人民币）&lt;br /&gt;
| processor    = &lt;br /&gt;
| prog_lang    = &lt;br /&gt;
| frequency    = &lt;br /&gt;
| precision    = &lt;br /&gt;
| display_type = 液晶显示屏&lt;br /&gt;
| display_size = 192×63&lt;br /&gt;
| memory_user  = &lt;br /&gt;
| memory_rom   = &lt;br /&gt;
| memory_extern= &lt;br /&gt;
| memory_data  = &lt;br /&gt;
| memory_step  =&lt;br /&gt;
| connection   = &lt;br /&gt;
| ports        = &lt;br /&gt;
| supply       = 内置太阳能电池和纽扣电池LR44*1&lt;br /&gt;
| power        = &lt;br /&gt;
| weight       = 0.09 (kg)&lt;br /&gt;
| dimensions   = 77*165.5*11.1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;卡西欧 fx-991CNX&#039;&#039;&#039;是卡西欧公司在2014年6月24日发布的面向中文用户的科学函数计算器，也是最早的ClassWiz机型&amp;lt;ref&amp;gt;相比后面的Classwiz旗舰机型，991CNX的功能是所有旗舰机型中功能最少的。&amp;lt;/ref&amp;gt;。这个型号的计算器用于取代原先的型号[[卡西歐 fx-991ES PLUS]]，并在原型号上进行改进，增加了功能，提升了屏幕分辨率，将系统界面全部变为简体中文（亦可以使用英文显示）和图形化，以方便用户使用。&lt;br /&gt;
&lt;br /&gt;
==外形==&lt;br /&gt;
卡西欧 fx-991CNX采用了与所有卡西欧CLASSWIZ系列相同的外形，其正面为黑色，机身背面和保护盖为纯白色，正面PS塑料材质面板上带有花纹。&lt;br /&gt;
&lt;br /&gt;
==电池供应==&lt;br /&gt;
使用内置太阳能电池（使用太阳能电池供电时屏幕右上角将有一个太阳状标志）和按钮电池LR44*1，&amp;lt;ref&amp;gt;在每天操作一小时情况下，电池大概寿命为两年&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==功能==&lt;br /&gt;
*卡西欧fx-991CNX拥有十个模式，分别为基本计算、复数计算、统计计算、基数运算、方程式运算、矩阵计算、通过函数生成数学表格、向量计算、不等式计算、比例式计算&lt;br /&gt;
&lt;br /&gt;
*拥有科学常数和公制转换功能&lt;br /&gt;
*自然书写显示&lt;br /&gt;
&lt;br /&gt;
==自检==&lt;br /&gt;
卡西欧fx-991CNX采用了新设计的自检，由两部分组成。详细内容请参考[[计算器自检]]&lt;br /&gt;
===一般自检===&lt;br /&gt;
由SHIFT+7+开机再按9进入，自检顺序为屏幕检查、系统版本、按键检查、屏幕对比度调节。&lt;br /&gt;
===按键电路检测===&lt;br /&gt;
由SHIFT+7+开机再按8进入，按屏幕顺序按下按键后完成。&lt;br /&gt;
&lt;br /&gt;
==参考==&lt;br /&gt;
#卡西欧fx-991CNX用户说明书RJA530830-001V01&lt;br /&gt;
#[http://tieba.baidu.com/p/3194146137 百度贴吧fx-es(ms)吧贴【专业评测】卡西欧CLASSWIZ系列中文函数机旗舰机型fx-991CN X]&lt;br /&gt;
#http://www.casio.com.cn/cal/scientific/fx-991CN%20X/index.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Template:CASIO-Calcs}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Casio]]&lt;br /&gt;
[[Category:计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=FX-5800P&amp;diff=8076</id>
		<title>FX-5800P</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=FX-5800P&amp;diff=8076"/>
		<updated>2016-07-28T15:11:16Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​Nbfreeh移动页面FX-5800P至Fx-5800P：统一至无卡西欧，使用小写&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#重定向 [[Fx-5800P]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-5800P&amp;diff=8075</id>
		<title>Fx-5800P</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-5800P&amp;diff=8075"/>
		<updated>2016-07-28T15:11:16Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​Nbfreeh移动页面FX-5800P至Fx-5800P：统一至无卡西欧，使用小写&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;卡西欧 &#039;&#039;&#039;FX-5800P&#039;&#039;&#039; 是卡西欧公司的一款可编程（无图形功能）计算器，同时也是测绘从业者经常使用的一款可编程计算器。&lt;br /&gt;
[[file:FX-5800P.PNG|thumb|right|200px|卡西欧FX-5800P]]&lt;br /&gt;
==性能指标和规格==&lt;br /&gt;
* 程序存储容量：28500字节，非易失性存储器&lt;br /&gt;
* 显示器：全点阵LCD，16字符×4行&lt;br /&gt;
* 编程语言：类BASIC编程语言&lt;br /&gt;
* 显示方式：书面输入，书面输出，内部精度15位&lt;br /&gt;
* 数据传输：3PIN接口，可以在两部计算器之间互传程序（不支持和PC连接）&lt;br /&gt;
* 供电方式：1节AAA电池&lt;br /&gt;
&lt;br /&gt;
==特性==&lt;br /&gt;
FX-5800P内置了很多与测绘和工程施工有关的程序，（包括线元法任意曲线三维坐标正反算程序，路线平纵曲线计算程序等），可以大幅简化测绘和施工过程中的运算过程，也正是如此，FX-5800P成为了测绘工作者广泛使用的一种可编程计算器。&lt;br /&gt;
&lt;br /&gt;
与此同时，FX-5800P还具备通过3PIN接口在两部计算器之间互相传输程序的功能，并配备了非易失性存储器，即便电池被取出或耗尽，程序也不会丢失。&lt;br /&gt;
&lt;br /&gt;
FX-5800P的类BASIC语言简单易学，便于使用，缺点是仅支持单字母变量。&lt;br /&gt;
&lt;br /&gt;
FX-5800P的计算功能和其他数学功能接近于卡西欧ES系列计算器，但功能更为强大，比如支持复数的任意次方和二阶导数计算等。&lt;br /&gt;
&lt;br /&gt;
==系统恢复==&lt;br /&gt;
极少数情况下，FX-5800P的固件程序可能会受到破坏，开机后屏幕显示：&lt;br /&gt;
 ROM!!!!!&lt;br /&gt;
此时应尝试拆下电池并放置1小时，随后装回电池并再次开机。若问题仍然没有解决，则需要用另一部正常工作的FX-5800P来进行固件恢复。首先需要使用3pin数据线将正常工作的FX-5800P和故障的FX-5800P连接在一起，随后进行如下操作：&lt;br /&gt;
===在正常的FX-5800P上===&lt;br /&gt;
#首先同时按下{{key|AC/ON}},{{key|MODE}}和{{key|7}}三个键。屏幕显示&amp;quot;DIAGNOSTIC MODE,Factory use only&amp;quot;。此时按下{{key|←}},然后按下{{key|9}}。&lt;br /&gt;
#:注意：计算器内全部数据会被清除。&lt;br /&gt;
#按下{{key|2}}，选择&amp;quot;OS UP Send&amp;quot;。（发送系统）&lt;br /&gt;
&lt;br /&gt;
===在故障的FX-5800P上===&lt;br /&gt;
#按下{{key|FILE}}，随后选择&amp;quot;OS UP Recv&amp;quot;。（接收系统）&lt;br /&gt;
&lt;br /&gt;
待传输完毕后，故障的FX-5800P即可恢复正常。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意：切不可将发送方和接收方弄反，否则将导致正常工作的FX-5800P损坏。&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E5%8D%A1%E8%A5%BF%E6%AC%A79850%E5%9B%BE%E5%BD%A2%E7%BC%96%E7%A8%8B%E8%AE%A1%E7%AE%97%E5%99%A8&amp;diff=8074</id>
		<title>卡西欧9850图形编程计算器</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E5%8D%A1%E8%A5%BF%E6%AC%A79850%E5%9B%BE%E5%BD%A2%E7%BC%96%E7%A8%8B%E8%AE%A1%E7%AE%97%E5%99%A8&amp;diff=8074"/>
		<updated>2016-07-28T15:10:55Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​Nbfreeh移动页面卡西欧9850图形编程计算器至CFX-9850图形编程计算器：统一至无卡西欧，使用小写&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#重定向 [[CFX-9850图形编程计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=CFX-9850%E5%9B%BE%E5%BD%A2%E7%BC%96%E7%A8%8B%E8%AE%A1%E7%AE%97%E5%99%A8&amp;diff=8073</id>
		<title>CFX-9850图形编程计算器</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=CFX-9850%E5%9B%BE%E5%BD%A2%E7%BC%96%E7%A8%8B%E8%AE%A1%E7%AE%97%E5%99%A8&amp;diff=8073"/>
		<updated>2016-07-28T15:10:54Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​Nbfreeh移动页面卡西欧9850图形编程计算器至CFX-9850图形编程计算器：统一至无卡西欧，使用小写&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Infobox calculator&lt;br /&gt;
| name         = 卡西欧9850计算器系列&lt;br /&gt;
| image        = &lt;br /&gt;
| caption      = &lt;br /&gt;
| type         = [[图形计算器|绘图]] [[编程计算器|编程]]&lt;br /&gt;
| entry        =[[Calculator_input_methods#Infix_notation|Infix]]&lt;br /&gt;
| introduced   = 1996&lt;br /&gt;
| discontinued = 2008&lt;br /&gt;
| manufacturer = [[Casio]]&lt;br /&gt;
| precision    = &lt;br /&gt;
| display_type = [[液晶显示器|LCD]] [[点阵显示屏]]&lt;br /&gt;
| display_size = 128×64 &lt;br /&gt;
| prog_lang    = 类[[BASIC]]&lt;br /&gt;
| memory_user  = &lt;br /&gt;
| memory_data  = 视机型而定&lt;br /&gt;
| memory_step  = &lt;br /&gt;
| supply       =4节[[AAA电池|AAA]]型电池&lt;br /&gt;
| weight       = 190 克&lt;br /&gt;
| dimensions   = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;卡西欧9850图形编程计算器系列&#039;&#039;&#039;在1999年至2008年间生产，这个系列是FX-9750G系列的高阶版本，大部分机型拥有光学[[液晶彩色显示屏]]（能显示[[橙色]]，[[绿色]]和[[蓝色]]）。&lt;br /&gt;
==机型==&lt;br /&gt;
===CFX-9850G===&lt;br /&gt;
CFX-9850G于1996年发布，是卡西欧9850计算器系列的第一款产品，让人引人注目的是它带有一个与[[卡西欧 CFX-9800G]]类似的彩色液晶显示屏（这种屏幕的实质是灰阶显示器，通过特殊的光学滤片使其看起来像是彩色的）。和9850G相同的机型是9930GT&amp;lt;ref name=&amp;quot;auto&amp;quot;&amp;gt;{{cite web|url=http://www.spiderpixel.co.uk/caspro/subhtml/modelsef.html|title=CASIO GRAPHIC CALCULATOR MODEL NUMBERS EQUIVALENCE|publisher=}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850G拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;&amp;gt;{{cite web|url=http://www.spiderpixel.co.uk/caspro/subhtml/history.html|title=history of casio graphic calculators|publisher=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB || 否|| 否 || 否&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850G Plus===&lt;br /&gt;
CFX-9850G Plus最早于1997年发布，当时的机身颜色为黑色，较CFX-9850G增加了金融功能，同时带有了[[Autodim]]。在2004年，白色版本的CFX-9850G Plus被发布，值得注意的是这个型号将内存扩大至64KB。与CFX-9850G Plus相同的机型是9940GT。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850G Plus（&#039;&#039;&#039;黑色版本&#039;&#039;&#039;）拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB ||是|| 否|| 是&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850G Plus（&#039;&#039;&#039;白色版本&#039;&#039;&#039;）拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 64KB ||是|| 否|| 是&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850Ga Plus===&lt;br /&gt;
CFX-9850Ga Plus于1997年发布，拥有的功能和CFX-9850G Plus黑色版本相同。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850Ga Plus拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB || 是|| 否||是&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850Gb Plus===&lt;br /&gt;
CFX-9850Gb Plus最早于1998年被发布，和CFX-9850G Plus类似，早期只有黑色机身版本，而后于2002年发布了白色机身的版本，但是并没有改进功能。有趣的是，CFX-9850Gb Plus内建了一个程序库，使用者可以将这些程序导入至编程功能中使用。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850Gb Plus拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB ||是|| 是|| 是&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850Gc Plus===&lt;br /&gt;
CFX-9850Gc Plus与2004年发布，是9850系列的最后一款机型，它相较于前代产品的区别仅仅是拥有64KB内存。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850Gc Plus拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 64KB || 是|| 否|| 是&lt;br /&gt;
|}&lt;br /&gt;
==系列参数==&lt;br /&gt;
===电源===&lt;br /&gt;
卡西欧9850计算器系列使用四节[[AAA电池|AAA]]型电池和一枚CR2032纽扣电池，其中纽扣电池用来保持数据备份。系列所有型号功耗皆为0.06W&amp;lt;ref&amp;gt;计算器背壳上注明：0.06W&amp;lt;/ref&amp;gt;&lt;br /&gt;
===连接===&lt;br /&gt;
&lt;br /&gt;
卡西欧9850计算器系列没有[[USB接口]]，其使用随机附送的卡西欧SB-62双机互连线沟通，可以互相导入数据与程序。通过这个接口，可以与德州仪器EA-100系列数据采集器系列相连接，采集类似于[[光照强度]]、[[温度]]、[[力]]、[[电压]]、[[PH值]]等数据并快速作图，亦可以和卡西欧标签打印机连接。&lt;br /&gt;
===CPU===&lt;br /&gt;
卡西欧9850计算器系列使用了来自[[日立]]为卡西欧定制的HCD62121处理器（测量方法使用了[[BogoMips]]，得分是0.000027，从而推测）。&lt;br /&gt;
&lt;br /&gt;
==图库==&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
*[http://www.cncalc.org/forum.php?mod=viewthread&amp;amp;tid=9636&amp;amp;highlight=cfx cfx-9850Gb评测-cncalc论坛]&lt;br /&gt;
*[http://support.casio.com/cn/manual/manuallist.php?cid=004 CASIO WORLDWIDE-支持-说明书-中文]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;br /&gt;
[[Category:可编程计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E5%8D%A1%E8%A5%BF%E6%AC%A7_fx-290&amp;diff=8072</id>
		<title>卡西欧 fx-290</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E5%8D%A1%E8%A5%BF%E6%AC%A7_fx-290&amp;diff=8072"/>
		<updated>2016-07-28T15:09:59Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​Nbfreeh移动页面卡西欧 fx-290至Fx-290：统一至无卡西欧，使用小写&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#重定向 [[Fx-290]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-290&amp;diff=8071</id>
		<title>Fx-290</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-290&amp;diff=8071"/>
		<updated>2016-07-28T15:09:59Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​Nbfreeh移动页面卡西欧 fx-290至Fx-290：统一至无卡西欧，使用小写&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = 卡西歐 fx-290&lt;br /&gt;
| image        =&lt;br /&gt;
| caption      = &lt;br /&gt;
| type         = [[科学计算器]]&lt;br /&gt;
| entry        = [[Calculator_input_methods#Mathematical_display|V.P.A.M.]]&lt;br /&gt;
| invent-date  = &lt;br /&gt;
| invent-name  = &lt;br /&gt;
| conn1        = &lt;br /&gt;
| via1_1       =&lt;br /&gt;
| designfirm   =&lt;br /&gt;
| manufacturer = &lt;br /&gt;
| introduced   =&lt;br /&gt;
| discontinued = &lt;br /&gt;
| cost         = &lt;br /&gt;
| processor    = &lt;br /&gt;
| prog_lang    = &lt;br /&gt;
| frequency    = &lt;br /&gt;
| precision    = 15位&lt;br /&gt;
| display_type = [[Liquid crystal display]]&lt;br /&gt;
| display_size = &lt;br /&gt;
| memory_user  = &lt;br /&gt;
| memory_rom   = &lt;br /&gt;
| memory_extern= &lt;br /&gt;
| memory_data  = &lt;br /&gt;
| memory_step  = &lt;br /&gt;
| connection   = &lt;br /&gt;
| ports        = &lt;br /&gt;
&lt;br /&gt;
| supply       =内置太阳能电池；按钮电池&lt;br /&gt;
&lt;br /&gt;
| power        = &lt;br /&gt;
| weight       = &lt;br /&gt;
| dimensions   = 19.5*78*155（mm）&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;卡西歐 fx-290&#039;&#039;&#039;是[[卡西欧]]公司发布的[[科学计算器|科学函数计算器]]。这个型号的计算器目前只在[[日本]]有售，其型号虽未标注为MS系列，但实则与新MS系列一致。&lt;br /&gt;
==功能==&lt;br /&gt;
卡西歐 fx-290的功能在卡西欧的科学计算器中不算多，但亦也不少。其拥有COMP、SD、REG三个模式运算（SD、REG是在MS型号被拆分的统计运算），有conversation（单位换算），但较旗舰机型[[卡西欧 fx-991MS]]缺少了CONSTANT（科学常数）功能。但卡西歐 fx-290拥有RanInt功能，是[[卡西欧 fx-991MS]]不具备的。因为卡西歐 fx-290是新MS系列，故拥有屏幕对比度调节与关机画面功能。&lt;br /&gt;
==自检==&lt;br /&gt;
由SHIFT+7+ON进入，自检顺序为屏幕检查、系统版本、按键检查、屏幕对比度调节。&lt;br /&gt;
==参考==&lt;br /&gt;
#卡西欧 fx-991MS用户说明书（日语）&lt;br /&gt;
#[http://tieba.baidu.com/p/3840847643 【测评】fx-290 &amp;amp; fx-991MS PLUS 多图详细测评]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Casio]]&lt;br /&gt;
[[Category:计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E5%8D%A1%E8%A5%BF%E6%AC%A7_fx-991CN_X&amp;diff=8070</id>
		<title>卡西欧 fx-991CN X</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E5%8D%A1%E8%A5%BF%E6%AC%A7_fx-991CN_X&amp;diff=8070"/>
		<updated>2016-07-28T15:07:40Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​Nbfreeh移动页面卡西欧 fx-991CN X至Fx-991CN X：统一至无卡西欧，使用小写&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#重定向 [[Fx-991CN X]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-991CN_X&amp;diff=8069</id>
		<title>Fx-991CN X</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-991CN_X&amp;diff=8069"/>
		<updated>2016-07-28T15:07:39Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​Nbfreeh移动页面卡西欧 fx-991CN X至Fx-991CN X：统一至无卡西欧，使用小写&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = 卡西欧 fx-991CNX&lt;br /&gt;
| image        = &lt;br /&gt;
| caption      = &lt;br /&gt;
| type         = [[科学计算器]]&lt;br /&gt;
| entry        = &lt;br /&gt;
| invent-date  = 2014年6月24日&lt;br /&gt;
| invent-name  = [[卡西欧]]&lt;br /&gt;
| conn1        = &lt;br /&gt;
| via1_1       = &lt;br /&gt;
| designfirm   = &lt;br /&gt;
| manufacturer = &lt;br /&gt;
| introduced   = &lt;br /&gt;
| discontinued = &lt;br /&gt;
| cost         = 168元（人民币）&lt;br /&gt;
| processor    = &lt;br /&gt;
| prog_lang    = &lt;br /&gt;
| frequency    = &lt;br /&gt;
| precision    = &lt;br /&gt;
| display_type = [[Liquid crystal display]]&lt;br /&gt;
| display_size = 192×63&lt;br /&gt;
| memory_user  = &lt;br /&gt;
| memory_rom   = &lt;br /&gt;
| memory_extern= &lt;br /&gt;
| memory_data  = &lt;br /&gt;
| memory_step  =&lt;br /&gt;
| connection   = &lt;br /&gt;
| ports        = &lt;br /&gt;
| supply       = 内置[[太阳能电池]]；[[按钮电池]]LR44*1&lt;br /&gt;
| power        = &lt;br /&gt;
| weight       = 0.09 (kg)&lt;br /&gt;
| dimensions   = 77*165.5*11.1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;卡西欧 fx-991CNX&#039;&#039;&#039;是卡西欧公司在2014年6月24日发布的面向中文用户的科学函数计算器。这个型号的计算器用于取代原先的型号[[卡西歐 fx-991ES PLUS]]，并在原型号上进行改进，增加了功能，提升了屏幕分辨率，将系统界面全部变为[[简体中文]]（亦可以使用英文显示）和图形化，以方便用户使用。&lt;br /&gt;
&lt;br /&gt;
==外形==&lt;br /&gt;
卡西欧 fx-991CNX采用了与所有卡西欧CLASSWIZ系列相同的外形，其正面为[[黑色]]，机身背面和保护盖为纯[[白色]]，正面[[PS塑料]]材质面板上带有花纹。&lt;br /&gt;
&lt;br /&gt;
==电池供应==&lt;br /&gt;
使用内置[[太阳能电池]]（使用太阳能电池供电时屏幕右上角将有一个太阳状标志）和[[按钮电池]]LR44*1，&amp;lt;ref&amp;gt;在每天操作一小时情况下，电池大概寿命为两年&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==功能==&lt;br /&gt;
*卡西欧fx-991CNX拥有十个模式，分别为基本计算、[[复数]]计算、统计计算、[[基数]]运算、[[方程式]]运算、[[矩阵]]计算、通过函数生成数学表格、[[向量]]计算、不等式计算、比例式计算&lt;br /&gt;
&lt;br /&gt;
*拥有[[常数|科学常数]]和公制转换功能&lt;br /&gt;
*自然书写显示&lt;br /&gt;
&lt;br /&gt;
==自检==&lt;br /&gt;
卡西欧fx-991CNX采用了新设计的自检，由两部分组成&lt;br /&gt;
===一般自检===&lt;br /&gt;
&lt;br /&gt;
由SHIFT+7+开机再按9进入，自检顺序为屏幕检查、系统版本、按键检查、屏幕对比度调节。&lt;br /&gt;
===按键电路检测===&lt;br /&gt;
由SHIFT+7+开机再按8进入，按屏幕顺序按下按键后完成。&lt;br /&gt;
&lt;br /&gt;
==参考==&lt;br /&gt;
#卡西欧fx-991CNX用户说明书RJA530830-001V01&lt;br /&gt;
#[http://tieba.baidu.com/p/3194146137 百度贴吧fx-es(ms)吧贴【专业评测】卡西欧CLASSWIZ系列中文函数机旗舰机型fx-991CN X]&lt;br /&gt;
#http://www.casio.com.cn/cal/scientific/fx-991CN%20X/index.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Casio]]&lt;br /&gt;
[[Category:计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-991MS&amp;diff=8068</id>
		<title>Fx-991MS</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-991MS&amp;diff=8068"/>
		<updated>2016-07-28T15:05:01Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = 卡西欧 fx-991MS&lt;br /&gt;
| image        = Casio fx-991MS.jpg&lt;br /&gt;
| caption       =&lt;br /&gt;
| type         = [[科学计算器]]&lt;br /&gt;
| entry        = [[S.V.P.A.M.]]&lt;br /&gt;
| invent-date    =&lt;br /&gt;
| invent-name    =&lt;br /&gt;
| conn1        =&lt;br /&gt;
| via1_1       =&lt;br /&gt;
| designfirm   =&lt;br /&gt;
| manufacturer =&lt;br /&gt;
| introduced   =&lt;br /&gt;
| discontinued =&lt;br /&gt;
| cost         =&lt;br /&gt;
| processor    =&lt;br /&gt;
| prog_lang    =&lt;br /&gt;
| frequency    =&lt;br /&gt;
| precision    = 12位（老）15位（新）&lt;br /&gt;
| display_type  =[[Liquid crystal display]]&lt;br /&gt;
| display_size  =&lt;br /&gt;
| memory_user  =&lt;br /&gt;
| memory_rom   =&lt;br /&gt;
| memory_extern=&lt;br /&gt;
| memory_data  =&lt;br /&gt;
| memory_step  =&lt;br /&gt;
| connection   =&lt;br /&gt;
| ports        =&lt;br /&gt;
| supply       = 内置太阳能电池；按钮电池LR44*1&lt;br /&gt;
| power        =&lt;br /&gt;
| weight       =&lt;br /&gt;
| dimensions   = 19.5*78*155（mm）&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;卡西欧 fx-991MS&#039;&#039;&#039;是[[卡西欧]]公司发布的[[科学计算器|科学函数计算器]]。这个型号的计算器用于取代原先的型号[[卡西欧 fx-991]]，并在原型号上进行改进，增加了功能。本计算器分为两个版本，销售时间有所不同，功能上也有不同。&lt;br /&gt;
==较早销售的版本==&lt;br /&gt;
较早销售的卡西欧 fx-991MS拥有八个计算模式（分别是基本计算（COMP）、[[复数|复数计算]]（CMPLX）、[[基数]]运算（BASE-N）、方程式运算（EQN）、[[矩阵]]计算（MATRIX）、通过函数生成数学表格（TABLE）、[[向量]]计算（VECTOR）和被拆分的统计运算）与[[常数|科学常数]]和公制转换功能。&lt;br /&gt;
==较晚销售的版本==&lt;br /&gt;
较晚销售的卡西欧 fx-991MS除了拥有与较早销售的版本相同的功能外，添加了屏幕[[对比度]]调节，拥有了关机时CASIO画面，并将电路板改为与[[fx-991ES PLUS]]一致的版本，使运算速度大大提高，计算精度也获得提升。但要注意的是，此版本在[[中国大陆]]地区没有销售。&lt;br /&gt;
==两个版本区别方法==&lt;br /&gt;
卡西欧 fx-991MS的两个版本在外形上无任何区别，只有通过开机后软件不同或拆机才可区分。&lt;br /&gt;
==参考==&lt;br /&gt;
#卡西欧 fx-991MS用户说明书&lt;br /&gt;
#[http://tieba.baidu.com/p/3840847643 【测评】fx-290 &amp;amp; fx-991MS PLUS 多图详细测评]&lt;br /&gt;
&lt;br /&gt;
{{Template:CASIO-Calcs}}&lt;br /&gt;
[[Category:Casio]]&lt;br /&gt;
[[Category:计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-991MS&amp;diff=8067</id>
		<title>Fx-991MS</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-991MS&amp;diff=8067"/>
		<updated>2016-07-28T15:03:05Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​新条目，由维基百科中文搬运，原创建者Nbfreeh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = 卡西欧 fx-991MS&lt;br /&gt;
| image        = Casio fx-991MS.jpg&lt;br /&gt;
| caption       =&lt;br /&gt;
| type         = [[科学计算器]]&lt;br /&gt;
| entry        = [[S.V.P.A.M.]]&lt;br /&gt;
| invent-date    =&lt;br /&gt;
| invent-name    =&lt;br /&gt;
| conn1        =&lt;br /&gt;
| via1_1       =&lt;br /&gt;
| designfirm   =&lt;br /&gt;
| manufacturer =&lt;br /&gt;
| introduced   =&lt;br /&gt;
| discontinued =&lt;br /&gt;
| cost         =&lt;br /&gt;
| processor    =&lt;br /&gt;
| prog_lang    =&lt;br /&gt;
| frequency    =&lt;br /&gt;
| precision    = 12位（老）15位（新）&lt;br /&gt;
| display_type  =[[Liquid crystal display]]&lt;br /&gt;
| display_size  =&lt;br /&gt;
| memory_user  =&lt;br /&gt;
| memory_rom   =&lt;br /&gt;
| memory_extern=&lt;br /&gt;
| memory_data  =&lt;br /&gt;
| memory_step  =&lt;br /&gt;
| connection   =&lt;br /&gt;
| ports        =&lt;br /&gt;
| supply       = 内置太阳能电池；按钮电池LR44*1&lt;br /&gt;
| power        =&lt;br /&gt;
| weight       =&lt;br /&gt;
| dimensions   = 19.5*78*155（mm）&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;卡西欧 fx-991MS&#039;&#039;&#039;是[[卡西欧]]公司发布的[[科学计算器|科学函数计算器]]。这个型号的计算器用于取代原先的型号[[卡西欧 fx-991]]，并在原型号上进行改进，增加了功能。本计算器分为两个版本，销售时间有所不同，功能上也有不同。&lt;br /&gt;
==较早销售的版本==&lt;br /&gt;
较早销售的卡西欧 fx-991MS拥有八个计算模式（分别是基本计算（COMP）、[[复数|复数计算]]（CMPLX）、[[基数]]运算（BASE-N）、方程式运算（EQN）、[[矩阵]]计算（MATRIX）、通过函数生成数学表格（TABLE）、[[向量]]计算（VECTOR）和被拆分的统计运算）与[[常数|科学常数]]和公制转换功能。&lt;br /&gt;
==较晚销售的版本==&lt;br /&gt;
较晚销售的卡西欧 fx-991MS除了拥有与较早销售的版本相同的功能外，添加了屏幕[[对比度]]调节，拥有了关机时CASIO画面，并将电路板改为与[[fx-991ES PLUS]]一致的版本，使运算速度大大提高，计算精度也获得提升。但要注意的是，此版本在[[中国大陆]]地区没有销售。&lt;br /&gt;
==两个版本区别方法==&lt;br /&gt;
卡西欧 fx-991MS的两个版本在外形上无任何区别，只有通过开机后软件不同或拆机才可区分。&lt;br /&gt;
==参考==&lt;br /&gt;
#卡西欧 fx-991MS用户说明书&lt;br /&gt;
#[http://tieba.baidu.com/p/3840847643 【测评】fx-290 &amp;amp; fx-991MS PLUS 多图详细测评]&lt;br /&gt;
&lt;br /&gt;
{{Casio Cal}}&lt;br /&gt;
[[Category:Casio]]&lt;br /&gt;
[[Category:计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=HP_Xpander&amp;diff=7874</id>
		<title>HP Xpander</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=HP_Xpander&amp;diff=7874"/>
		<updated>2016-07-07T05:33:11Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = HP Xpander&lt;br /&gt;
| image        = HP Xpander.jpg&lt;br /&gt;
| caption      = 校准触摸屏状态的HP Xpander&lt;br /&gt;
| type         = [[图形计算器]]&lt;br /&gt;
| entry        = &lt;br /&gt;
| invent-date  = 2001年&lt;br /&gt;
| invent-name  = [[惠普]]&lt;br /&gt;
| conn1        = &lt;br /&gt;
| via1_1       = &lt;br /&gt;
| designfirm   = &lt;br /&gt;
| manufacturer = &lt;br /&gt;
| introduced   = &lt;br /&gt;
| discontinued = &lt;br /&gt;
| cost         = &lt;br /&gt;
| processor    = [[日立]]SH3&lt;br /&gt;
| prog_lang    = &lt;br /&gt;
| frequency    = &lt;br /&gt;
| precision    = &lt;br /&gt;
| display_type = 灰度触摸显示屏&lt;br /&gt;
| display_size = 240*320&lt;br /&gt;
| memory_user  = 8 MB&lt;br /&gt;
| memory_rom   = 16 MB&lt;br /&gt;
| memory_extern= &lt;br /&gt;
| memory_data  = &lt;br /&gt;
| memory_step  = &lt;br /&gt;
| connection   = &lt;br /&gt;
| ports        = &lt;br /&gt;
| supply       = 2节AA电池&lt;br /&gt;
| power        = &lt;br /&gt;
| weight       = &lt;br /&gt;
| dimensions   = 162.6*88.9*22.9 （mm）&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HP Xpander&#039;&#039;&#039;是一款由[[惠普]]在2001年设计的[[图形计算器]]，但是在计划投入生产前的几个星期，这个项目被取消。&amp;lt;ref&amp;gt;{{cite web | url=http://news.cnet.com/2100-1040-252597.html | title=HP says calculator-handheld combo doesn&#039;t add up | first=Ian | last=Fried | authorlink=Ian Fried (journalist) | publisher=[[CNet]] | date=2001-02-14 | accessdate=2014-04-06}}&amp;lt;/ref&amp;gt;这款计算器可以使用触摸或键盘两种方式进行输入，拥有一个大尺寸的灰度触摸屏（240×320）。HP Xpander机身采用灰色塑料和少部分半透明蓝色塑料，因此它看起来类似于[[PDA]]。&lt;br /&gt;
&lt;br /&gt;
HP Xpander采用了[[日立]]SH3处理器，拥有8 MB RAM和16 MB ROM，其底层系统为Windows CE 3.0。为了适应课堂教学的设计目标，HP Xpander系统内预装了一个几何软件，但可惜的是它没有[[计算机代数系统]]（CAS)。&lt;br /&gt;
&lt;br /&gt;
HP Xpander位于顶部有一个扩展接口。&lt;br /&gt;
&lt;br /&gt;
==Math Xpander==&lt;br /&gt;
在终止了HP Xpander实体机的生产后，[[惠普]]决定以免费的方式公开Xpander软件，它可以在运行Windows CE的Pocket PC设备上运行。&amp;lt;ref&amp;gt;{{cite web | url=http://www.saltire.com/consulting.html | title=Consulting | publisher=Saltire Software | accessdate=2014-04-06}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web | url=http://www.rskey.org/CMS/index.php/7?manufacturer=Hewlett-Packard&amp;amp;model=HP+Xpander | title=Hewlett-Packard HP Xpander | publisher=rskey.org | accessdate=2014-04-06}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
*[[惠普图形计算器对比]]&lt;br /&gt;
* [[Casio ClassPad 300]]-由[[卡西欧]]发布的类似产品&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
*[http://www.hpmuseum.org/xpand.htm HP Xpander at hpmuseum.org]&lt;br /&gt;
*[http://www.hpcalc.org/xpander.php HP Xpander at hpcalc.org]&lt;br /&gt;
*[http://www.rskey.org/CMS/index.php/7?manufacturer=Hewlett-Packard&amp;amp;model=HP+Xpander HP Xpander at rskey.org]&lt;br /&gt;
*[http://www.evilmadscientist.com/2011/the-hp-xpander/ HP Xpander at evilmadscientist.com]&lt;br /&gt;
*[http://web.archive.org/web/20050514134805/http://www.saltirescientific.com/downloads/MathXpander/XpanderUsersGuide.pdf Math Xpander user&#039;s guide]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=HP_Xpander&amp;diff=7873</id>
		<title>HP Xpander</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=HP_Xpander&amp;diff=7873"/>
		<updated>2016-07-07T05:32:45Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = HP Xpander&lt;br /&gt;
| image        = HP Xpander.jpg&lt;br /&gt;
| caption      = 校准触摸屏状态的HP Xpander&lt;br /&gt;
| type         = [[图形计算器]]&lt;br /&gt;
| entry        = &lt;br /&gt;
| invent-date  = 2001年&lt;br /&gt;
| invent-name  = [[惠普]]&lt;br /&gt;
| conn1        = &lt;br /&gt;
| via1_1       = &lt;br /&gt;
| designfirm   = &lt;br /&gt;
| manufacturer = &lt;br /&gt;
| introduced   = &lt;br /&gt;
| discontinued = &lt;br /&gt;
| cost         = &lt;br /&gt;
| processor    = [[日立]]SH3&lt;br /&gt;
| prog_lang    = &lt;br /&gt;
| frequency    = &lt;br /&gt;
| precision    = &lt;br /&gt;
| display_type = 灰度触摸显示屏&lt;br /&gt;
| display_size = 240*320&lt;br /&gt;
| memory_user  = 8 MB&lt;br /&gt;
| memory_rom   = 16 MB&lt;br /&gt;
| memory_extern= &lt;br /&gt;
| memory_data  = &lt;br /&gt;
| memory_step  = &lt;br /&gt;
| connection   = &lt;br /&gt;
| ports        = &lt;br /&gt;
| supply       = 2节AA电池&lt;br /&gt;
| power        = &lt;br /&gt;
| weight       = &lt;br /&gt;
| dimensions   = 162.6*88.9*22.9 （mm）&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HP Xpander&#039;&#039;&#039;是一款由[[惠普]]在2001年设计的[[图形计算器]]，但是在计划投入生产前的几个星期，这个项目被取消。&amp;lt;ref&amp;gt;{{cite web | url=http://news.cnet.com/2100-1040-252597.html | title=HP says calculator-handheld combo doesn&#039;t add up | first=Ian | last=Fried | authorlink=Ian Fried (journalist) | publisher=[[CNet]] | date=2001-02-14 | accessdate=2014-04-06}}&amp;lt;/ref&amp;gt;这款计算器可以使用触摸或键盘两种方式进行输入，拥有一个大尺寸的灰度触摸屏（240×320）。HP Xpander机身采用灰色塑料和少部分半透明蓝色塑料，因此它看起来类似于[[PDA]]。&lt;br /&gt;
&lt;br /&gt;
HP Xpander采用了[[日立]]SH3处理器，拥有8 MB RAM和16 MB ROM，其底层系统为Windows CE 3.0。为了适应课堂教学的设计目标，HP Xpander系统内预装了一个几何软件，但可惜的是它没有[[计算机代数系统]]（CAS)。&lt;br /&gt;
&lt;br /&gt;
HP Xpander位于顶部有一个扩展接口。&lt;br /&gt;
&lt;br /&gt;
==Math Xpander==&lt;br /&gt;
在终止了HP Xpander实体机的生产后，[[惠普]]决定以免费的方式公开Xpander软件，它可以在运行Windows CE的Pocket PC设备上运行。&amp;lt;ref&amp;gt;{{cite web | url=http://www.saltire.com/consulting.html | title=Consulting | publisher=Saltire Software | accessdate=2014-04-06}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web | url=http://www.rskey.org/CMS/index.php/7?manufacturer=Hewlett-Packard&amp;amp;model=HP+Xpander | title=Hewlett-Packard HP Xpander | publisher=rskey.org | accessdate=2014-04-06}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
*[[惠普图形计算器对比]]&lt;br /&gt;
* [[Casio ClassPad 300]]-由[[卡西欧]]发布的类似产品&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
*[http://www.hpmuseum.org/xpand.htm HP Xpander at hpmuseum.org]&lt;br /&gt;
*[http://www.hpcalc.org/xpander.php HP Xpander at hpcalc.org]&lt;br /&gt;
*[http://www.rskey.org/CMS/index.php/7?manufacturer=Hewlett-Packard&amp;amp;model=HP+Xpander HP Xpander at rskey.org]&lt;br /&gt;
*[http://www.evilmadscientist.com/2011/the-hp-xpander/ HP Xpander at evilmadscientist.com]&lt;br /&gt;
*[http://web.archive.org/web/20050514134805/http://www.saltirescientific.com/downloads/MathXpander/XpanderUsersGuide.pdf Math Xpander user&#039;s guide]&lt;br /&gt;
&lt;br /&gt;
{{模板:惠普计算器}}&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=HP_Xpander&amp;diff=7872</id>
		<title>HP Xpander</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=HP_Xpander&amp;diff=7872"/>
		<updated>2016-07-07T05:27:14Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​创建页面，内容为“{{Infobox calculator | name         = HP Xpander | image        = HP Xpander.jpg | caption      = 校准触摸屏状态的HP Xpander | type         = 图形计算...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = HP Xpander&lt;br /&gt;
| image        = HP Xpander.jpg&lt;br /&gt;
| caption      = 校准触摸屏状态的HP Xpander&lt;br /&gt;
| type         = [[图形计算器]]&lt;br /&gt;
| entry        = &lt;br /&gt;
| invent-date  = 2001年&lt;br /&gt;
| invent-name  = [[惠普公司]]&lt;br /&gt;
| conn1        = &lt;br /&gt;
| via1_1       = &lt;br /&gt;
| designfirm   = &lt;br /&gt;
| manufacturer = &lt;br /&gt;
| introduced   = &lt;br /&gt;
| discontinued = &lt;br /&gt;
| cost         = &lt;br /&gt;
| processor    = [[日立]]SH3&lt;br /&gt;
| prog_lang    = &lt;br /&gt;
| frequency    = &lt;br /&gt;
| precision    = &lt;br /&gt;
| display_type = 灰度触摸显示屏&lt;br /&gt;
| display_size = 240*320&lt;br /&gt;
| memory_user  = 8 MB&lt;br /&gt;
| memory_rom   = 16 MB&lt;br /&gt;
| memory_extern= &lt;br /&gt;
| memory_data  = &lt;br /&gt;
| memory_step  = &lt;br /&gt;
| connection   = &lt;br /&gt;
| ports        = &lt;br /&gt;
| supply       = 2节AA电池&lt;br /&gt;
| power        = &lt;br /&gt;
| weight       = &lt;br /&gt;
| dimensions   = 162.6*88.9*22.9 （mm）&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HP Xpander&#039;&#039;&#039;是一款由[[惠普公司]]在2001年设计的[[图形计算器]]，但是在计划投入生产前的几个星期，这个项目被取消。&amp;lt;ref&amp;gt;{{cite web | url=http://news.cnet.com/2100-1040-252597.html | title=HP says calculator-handheld combo doesn&#039;t add up | first=Ian | last=Fried | authorlink=Ian Fried (journalist) | publisher=[[CNet]] | date=2001-02-14 | accessdate=2014-04-06}}&amp;lt;/ref&amp;gt;这款计算器可以使用触摸或键盘两种方式进行输入，拥有一个大尺寸的[[灰度]][[触摸屏]]（240×320）。HP Xpander机身采用[[灰色]][[塑料]]和少部分半透明[[蓝色]]塑料，因此它看起来类似于[[PDA]]。&lt;br /&gt;
&lt;br /&gt;
HP Xpander采用了[[日立]]SH3处理器，拥有8 MB [[RAM]]和16 MB [[ROM]]，其底层系统为[[Windows CE|Windows CE 3.0]]。为了适应课堂教学的设计目标，HP Xpander系统内预装了一个几何软件，但可惜的是它没有[[计算机代数系统]]（CAS)。&lt;br /&gt;
&lt;br /&gt;
HP Xpander位于顶部有一个扩展接口。&lt;br /&gt;
&lt;br /&gt;
==Math Xpander==&lt;br /&gt;
在终止了HP Xpander实体机的生产后，[[惠普公司]]决定以免费的方式公开Xpander软件，它可以在运行Windows CE的[[Pocket PC]]设备上运行。&amp;lt;ref&amp;gt;{{cite web | url=http://www.saltire.com/consulting.html | title=Consulting | publisher=Saltire Software | accessdate=2014-04-06}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web | url=http://www.rskey.org/CMS/index.php/7?manufacturer=Hewlett-Packard&amp;amp;model=HP+Xpander | title=Hewlett-Packard HP Xpander | publisher=rskey.org | accessdate=2014-04-06}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
*[[惠普图形计算器对比]]&lt;br /&gt;
* [[Casio ClassPad 300]]-由[[卡西欧]]发布的类似产品&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
*[http://www.hpmuseum.org/xpand.htm HP Xpander at hpmuseum.org]&lt;br /&gt;
*[http://www.hpcalc.org/xpander.php HP Xpander at hpcalc.org]&lt;br /&gt;
*[http://www.rskey.org/CMS/index.php/7?manufacturer=Hewlett-Packard&amp;amp;model=HP+Xpander HP Xpander at rskey.org]&lt;br /&gt;
*[http://www.evilmadscientist.com/2011/the-hp-xpander/ HP Xpander at evilmadscientist.com]&lt;br /&gt;
*[http://web.archive.org/web/20050514134805/http://www.saltirescientific.com/downloads/MathXpander/XpanderUsersGuide.pdf Math Xpander user&#039;s guide]&lt;br /&gt;
&lt;br /&gt;
{{模板:惠普计算器}}&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=TI-82&amp;diff=7870</id>
		<title>TI-82</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=TI-82&amp;diff=7870"/>
		<updated>2016-07-05T04:13:56Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​/* 外部链接 */ // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
|name = TI-82&lt;br /&gt;
|image = TI-82.png&lt;br /&gt;
|caption = TI-82&lt;br /&gt;
|type = [[图形计算器]]&lt;br /&gt;
| entry        =[[Calculator input methods#Mathematical display|D.A.L.]]&lt;br /&gt;
|manufacturer = [[德州仪器]]&lt;br /&gt;
|introduced = 1993&lt;br /&gt;
|discontinued = 2004&lt;br /&gt;
|predecessor = TI-81&lt;br /&gt;
|successor = [[TI-83]]&lt;br /&gt;
|processor = [[Zilog Z80]]&lt;br /&gt;
| frequency  = 6 MHz  &lt;br /&gt;
|memory_user = 28 kB [[random access memory|RAM]]&lt;br /&gt;
|display_size = 96×64像素, 16×8字符&lt;br /&gt;
|precision =&lt;br /&gt;
|link =&lt;br /&gt;
|prog_lang =&lt;br /&gt;
|supply = 4 节[[电池|AAA]]电池,&amp;lt;br&amp;gt;1节CR1616或CR1620纽扣电池&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI-82&#039;&#039;&#039;是一款由[[德州仪器]]于[[1993年]]发行的[[图形计算器]]，来取代其前身产品TI-81，其继承了TI-81上的功能集和96X64像素的显示屏。TI-82相较于前一年发布的[[TI-85]]拥有更友好的操作方式。&lt;br /&gt;
&lt;br /&gt;
TI-82和[[TI-85]]采用了同样的6兆赫[[Zilog Z80]][[微处理器]]&amp;lt;ref name=&amp;quot;auto&amp;quot;&amp;gt;{{cite web|url=http://www.math.umbc.edu/~campbell/Calculators/TI8x/|last=Campbell|first=Robert|title=TI-82/83/85/86 Mathematics Use|year=2001|publisher=UMBC}}&amp;lt;/ref&amp;gt;，其被认作是[[TI-83]]的前身。&lt;br /&gt;
&lt;br /&gt;
TI-82已经在2004年停产。&lt;br /&gt;
==发展==&lt;br /&gt;
和TI-81相比较，TI-82增加了一个数据串口，从而允许使用者可以方便的使用线缆在计算器与[[电脑]]或另一台计算器之间传输数据与程序。在软件功能上，TI-82添加了两种新的作图类型（polar、sequence），[[矩阵]]限制被提高至50*50。一个重要的更改为TI-82使用了[[汇编语言]]而不是德州仪器的[[TI-BASIC]]，这个变化使得程序拥有更高的性能及更好的灵活性。&lt;br /&gt;
&lt;br /&gt;
==后续沿革==&lt;br /&gt;
TI-82分别在1999年与2001年有两次改款。&lt;br /&gt;
===1999年===&lt;br /&gt;
1999年版本的TI-82外形极其类似于TI-73、[[TI-83]]和TI-89。这个版本使用水平的屏幕来取代德州仪器在旧产品上一贯采用的倾斜屏幕设计。&lt;br /&gt;
===2001年===&lt;br /&gt;
2001年版本取消了屏幕边框设计，并且降低了[[印刷电路板]]成本。这个版本又被称为TI-82 &amp;quot;Parcus&amp;quot;。&amp;lt;ref&amp;gt;{{cite web|url=http://datamath.org/Graphing/TI-82_1.htm|title=DATAMATH|publisher=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TI-82 STATS===&lt;br /&gt;
TI-82 STATS是TI-82的一个延伸版本，也是TI-82的最后一个机型，这个版本于2002年在[[欧洲]]首次发售。相对于普通版本的TI-82，TI-82 STATS增加了[[微分]]和[[积分]]，完善了[[复数]]、[[金融]]、[[统计]]功能。在一定意义上，这个版本的TI-82可以和TI-83相比较。&lt;br /&gt;
&lt;br /&gt;
==技术信息==&lt;br /&gt;
*&#039;&#039;&#039;[[处理器|CPU]]:&#039;&#039;&#039; [[Zilog Z80]] CPU,&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt; 6 [[Megahertz|MHz]]&lt;br /&gt;
*&#039;&#039;&#039;[[RAM]]:&#039;&#039;&#039; 32 [[Kilobyte|KB]], (28 KB 使用者可用)&lt;br /&gt;
*&#039;&#039;&#039;[[ROM]]:&#039;&#039;&#039; 128 KB 不可升级&lt;br /&gt;
*&#039;&#039;&#039;[[屏幕]]&#039;&#039;&#039;&lt;br /&gt;
**文字: 21×8 字符&lt;br /&gt;
**图形: 128×64 像素&lt;br /&gt;
*&#039;&#039;&#039;连接端口:&#039;&#039;&#039; 2.5 mm I/O port&lt;br /&gt;
*&#039;&#039;&#039;[[电源]]:&#039;&#039;&#039; 4×[[AAA battery|AAA]], 1×CR1616 or CR1620&lt;br /&gt;
*&#039;&#039;&#039;[[编程语言]]:&#039;&#039;&#039; [[TI-BASIC]], Z80 [[Assembly language|Assembly]]&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
* [[TI图形计算器对比]]&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
&lt;br /&gt;
* [http://education.ti.com/educationportal/sites/US/nonProductSingle/about_press_release_cg-388.html Texas Instruments press release] March 30, 1993&lt;br /&gt;
* [http://www.ticalc.org ticalc.org] – The largest archive of TI programs available.&lt;br /&gt;
*[http://calcg.org/ CalcG.org] - Very organized and large archive of games and programs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;br /&gt;
[[Category:德州仪器计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=TI-82&amp;diff=7869</id>
		<title>TI-82</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=TI-82&amp;diff=7869"/>
		<updated>2016-07-05T04:13:15Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
|name = TI-82&lt;br /&gt;
|image = TI-82.png&lt;br /&gt;
|caption = TI-82&lt;br /&gt;
|type = [[图形计算器]]&lt;br /&gt;
| entry        =[[Calculator input methods#Mathematical display|D.A.L.]]&lt;br /&gt;
|manufacturer = [[德州仪器]]&lt;br /&gt;
|introduced = 1993&lt;br /&gt;
|discontinued = 2004&lt;br /&gt;
|predecessor = TI-81&lt;br /&gt;
|successor = [[TI-83]]&lt;br /&gt;
|processor = [[Zilog Z80]]&lt;br /&gt;
| frequency  = 6 MHz  &lt;br /&gt;
|memory_user = 28 kB [[random access memory|RAM]]&lt;br /&gt;
|display_size = 96×64像素, 16×8字符&lt;br /&gt;
|precision =&lt;br /&gt;
|link =&lt;br /&gt;
|prog_lang =&lt;br /&gt;
|supply = 4 节[[电池|AAA]]电池,&amp;lt;br&amp;gt;1节CR1616或CR1620纽扣电池&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI-82&#039;&#039;&#039;是一款由[[德州仪器]]于[[1993年]]发行的[[图形计算器]]，来取代其前身产品TI-81，其继承了TI-81上的功能集和96X64像素的显示屏。TI-82相较于前一年发布的[[TI-85]]拥有更友好的操作方式。&lt;br /&gt;
&lt;br /&gt;
TI-82和[[TI-85]]采用了同样的6兆赫[[Zilog Z80]][[微处理器]]&amp;lt;ref name=&amp;quot;auto&amp;quot;&amp;gt;{{cite web|url=http://www.math.umbc.edu/~campbell/Calculators/TI8x/|last=Campbell|first=Robert|title=TI-82/83/85/86 Mathematics Use|year=2001|publisher=UMBC}}&amp;lt;/ref&amp;gt;，其被认作是[[TI-83]]的前身。&lt;br /&gt;
&lt;br /&gt;
TI-82已经在2004年停产。&lt;br /&gt;
==发展==&lt;br /&gt;
和TI-81相比较，TI-82增加了一个数据串口，从而允许使用者可以方便的使用线缆在计算器与[[电脑]]或另一台计算器之间传输数据与程序。在软件功能上，TI-82添加了两种新的作图类型（polar、sequence），[[矩阵]]限制被提高至50*50。一个重要的更改为TI-82使用了[[汇编语言]]而不是德州仪器的[[TI-BASIC]]，这个变化使得程序拥有更高的性能及更好的灵活性。&lt;br /&gt;
&lt;br /&gt;
==后续沿革==&lt;br /&gt;
TI-82分别在1999年与2001年有两次改款。&lt;br /&gt;
===1999年===&lt;br /&gt;
1999年版本的TI-82外形极其类似于TI-73、[[TI-83]]和TI-89。这个版本使用水平的屏幕来取代德州仪器在旧产品上一贯采用的倾斜屏幕设计。&lt;br /&gt;
===2001年===&lt;br /&gt;
2001年版本取消了屏幕边框设计，并且降低了[[印刷电路板]]成本。这个版本又被称为TI-82 &amp;quot;Parcus&amp;quot;。&amp;lt;ref&amp;gt;{{cite web|url=http://datamath.org/Graphing/TI-82_1.htm|title=DATAMATH|publisher=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TI-82 STATS===&lt;br /&gt;
TI-82 STATS是TI-82的一个延伸版本，也是TI-82的最后一个机型，这个版本于2002年在[[欧洲]]首次发售。相对于普通版本的TI-82，TI-82 STATS增加了[[微分]]和[[积分]]，完善了[[复数]]、[[金融]]、[[统计]]功能。在一定意义上，这个版本的TI-82可以和TI-83相比较。&lt;br /&gt;
&lt;br /&gt;
==技术信息==&lt;br /&gt;
*&#039;&#039;&#039;[[处理器|CPU]]:&#039;&#039;&#039; [[Zilog Z80]] CPU,&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt; 6 [[Megahertz|MHz]]&lt;br /&gt;
*&#039;&#039;&#039;[[RAM]]:&#039;&#039;&#039; 32 [[Kilobyte|KB]], (28 KB 使用者可用)&lt;br /&gt;
*&#039;&#039;&#039;[[ROM]]:&#039;&#039;&#039; 128 KB 不可升级&lt;br /&gt;
*&#039;&#039;&#039;[[屏幕]]&#039;&#039;&#039;&lt;br /&gt;
**文字: 21×8 字符&lt;br /&gt;
**图形: 128×64 像素&lt;br /&gt;
*&#039;&#039;&#039;连接端口:&#039;&#039;&#039; 2.5 mm I/O port&lt;br /&gt;
*&#039;&#039;&#039;[[电源]]:&#039;&#039;&#039; 4×[[AAA battery|AAA]], 1×CR1616 or CR1620&lt;br /&gt;
*&#039;&#039;&#039;[[编程语言]]:&#039;&#039;&#039; [[TI-BASIC]], Z80 [[Assembly language|Assembly]]&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
* [[TI图形计算器对比]]&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
{{Commons category}}&lt;br /&gt;
* [http://education.ti.com/educationportal/sites/US/nonProductSingle/about_press_release_cg-388.html Texas Instruments press release] March 30, 1993&lt;br /&gt;
* [http://www.ticalc.org ticalc.org] – The largest archive of TI programs available.&lt;br /&gt;
*[http://calcg.org/ CalcG.org] - Very organized and large archive of games and programs.&lt;br /&gt;
&lt;br /&gt;
{{TI-calc}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Ti-82}}&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;br /&gt;
[[Category:德州仪器计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=TI-82&amp;diff=7868</id>
		<title>TI-82</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=TI-82&amp;diff=7868"/>
		<updated>2016-07-04T13:40:43Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​空编辑，表明明天加入相关模板之用途&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Infobox Calculator&lt;br /&gt;
|name = TI-82&lt;br /&gt;
|image = TI-82.png&lt;br /&gt;
|caption = TI-82&lt;br /&gt;
|type = [[图形计算器]]&lt;br /&gt;
| entry        =[[Calculator input methods#Mathematical display|D.A.L.]]&lt;br /&gt;
|manufacturer = [[德州仪器]]&lt;br /&gt;
|introduced = 1993&lt;br /&gt;
|discontinued = 2004&lt;br /&gt;
|predecessor = {{Link-en|TI-81|TI-81|TI-81}}&lt;br /&gt;
|successor = [[TI-83]]&lt;br /&gt;
|processor = [[Zilog Z80]]&lt;br /&gt;
| frequency  = 6 MHz  &lt;br /&gt;
|memory_user = 28 kB [[random access memory|RAM]]&lt;br /&gt;
|display_size = 96×64像素, 16×8字符&lt;br /&gt;
|precision =&lt;br /&gt;
|link =&lt;br /&gt;
|prog_lang =&lt;br /&gt;
|supply = 4 节[[电池|AAA]]电池,&amp;lt;br&amp;gt;1节CR1616或CR1620纽扣电池&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI-82&#039;&#039;&#039;是一款由[[德州仪器]]于[[1993年]]发行的[[图形计算器]]，来取代其前身产品{{Link-en|TI-81|TI-81|TI-81}}，其继承了{{Link-en|TI-81|TI-81|TI-81}}上的功能集和96X64像素的显示屏。TI-82相较于前一年发布的[[TI-85]]拥有更友好的操作方式。&lt;br /&gt;
&lt;br /&gt;
TI-82和[[TI-85]]采用了同样的6兆赫[[Zilog Z80]][[微处理器]]&amp;lt;ref name=&amp;quot;auto&amp;quot;&amp;gt;{{cite web|url=http://www.math.umbc.edu/~campbell/Calculators/TI8x/|last=Campbell|first=Robert|title=TI-82/83/85/86 Mathematics Use|year=2001|publisher=UMBC}}&amp;lt;/ref&amp;gt;，其被认作是[[TI-83]]的前身。&lt;br /&gt;
&lt;br /&gt;
TI-82已经在2004年停产。&lt;br /&gt;
==发展==&lt;br /&gt;
和{{Link-en|TI-81|TI-81|TI-81}}相比较，TI-82增加了一个数据串口，从而允许使用者可以方便的使用线缆在计算器与[[电脑]]或另一台计算器之间传输数据与程序。在软件功能上，TI-82添加了两种新的作图类型（polar、sequence），[[矩阵]]限制被提高至50*50。一个重要的更改为TI-82使用了[[汇编语言]]而不是德州仪器的[[TI-BASIC]]，这个变化使得程序拥有更高的性能及更好的灵活性。&lt;br /&gt;
&lt;br /&gt;
==后续沿革==&lt;br /&gt;
TI-82分别在1999年与2001年有两次改款。&lt;br /&gt;
===1999年===&lt;br /&gt;
1999年版本的TI-82外形极其类似于{{Link-en|TI-73|TI-73 series|TI-73}}、[[TI-83|TI-83x]]和{{Link-en|TI-89|TI-89 series|TI-89}}。这个版本使用水平的屏幕来取代德州仪器在旧产品上一贯采用的倾斜屏幕设计。&lt;br /&gt;
===2001年===&lt;br /&gt;
2001年版本取消了屏幕边框设计，并且降低了[[印刷电路板]]成本。这个版本又被称为TI-82 &amp;quot;Parcus&amp;quot;。&amp;lt;ref&amp;gt;{{cite web|url=http://datamath.org/Graphing/TI-82_1.htm|title=DATAMATH|publisher=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TI-82 STATS===&lt;br /&gt;
TI-82 STATS是TI-82的一个延伸版本，也是TI-82的最后一个机型，这个版本于2002年在[[欧洲]]首次发售。相对于普通版本的TI-82，TI-82 STATS增加了[[微分]]和[[积分]]，完善了[[复数]]、[[金融]]、[[统计]]功能。在一定意义上，这个版本的TI-82可以和[[TI-83|TI-83x]]相比较。&lt;br /&gt;
&lt;br /&gt;
==技术信息==&lt;br /&gt;
*&#039;&#039;&#039;[[处理器|CPU]]:&#039;&#039;&#039; [[Zilog Z80]] CPU,&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt; 6 [[Megahertz|MHz]]&lt;br /&gt;
*&#039;&#039;&#039;[[RAM]]:&#039;&#039;&#039; 32 [[Kilobyte|KB]], (28 KB 使用者可用)&lt;br /&gt;
*&#039;&#039;&#039;[[ROM]]:&#039;&#039;&#039; 128 KB 不可升级&lt;br /&gt;
*&#039;&#039;&#039;[[屏幕]]&#039;&#039;&#039;&lt;br /&gt;
**文字: 21×8 字符&lt;br /&gt;
**图形: 128×64 像素&lt;br /&gt;
*&#039;&#039;&#039;连接端口:&#039;&#039;&#039; 2.5 mm I/O port&lt;br /&gt;
*&#039;&#039;&#039;[[电源]]:&#039;&#039;&#039; 4×[[AAA battery|AAA]], 1×CR1616 or CR1620&lt;br /&gt;
*&#039;&#039;&#039;[[编程语言]]:&#039;&#039;&#039; [[TI-BASIC]], Z80 [[Assembly language|Assembly]]&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
* [[TI图形计算器对比]]&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
{{Commons category}}&lt;br /&gt;
* [http://education.ti.com/educationportal/sites/US/nonProductSingle/about_press_release_cg-388.html Texas Instruments press release] March 30, 1993&lt;br /&gt;
* [http://www.ticalc.org ticalc.org] – The largest archive of TI programs available.&lt;br /&gt;
*[http://calcg.org/ CalcG.org] - Very organized and large archive of games and programs.&lt;br /&gt;
&lt;br /&gt;
{{TI-calc}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Ti-82}}&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;br /&gt;
[[Category:德州仪器计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=TI-82&amp;diff=7867</id>
		<title>TI-82</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=TI-82&amp;diff=7867"/>
		<updated>2016-07-04T13:39:55Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​新条目&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Calculator&lt;br /&gt;
|name = TI-82&lt;br /&gt;
|image = TI-82.png&lt;br /&gt;
|caption = TI-82&lt;br /&gt;
|type = [[图形计算器]]&lt;br /&gt;
| entry        =[[Calculator input methods#Mathematical display|D.A.L.]]&lt;br /&gt;
|manufacturer = [[德州仪器]]&lt;br /&gt;
|introduced = 1993&lt;br /&gt;
|discontinued = 2004&lt;br /&gt;
|predecessor = {{Link-en|TI-81|TI-81|TI-81}}&lt;br /&gt;
|successor = [[TI-83]]&lt;br /&gt;
|processor = [[Zilog Z80]]&lt;br /&gt;
| frequency  = 6 MHz  &lt;br /&gt;
|memory_user = 28 kB [[random access memory|RAM]]&lt;br /&gt;
|display_size = 96×64像素, 16×8字符&lt;br /&gt;
|precision =&lt;br /&gt;
|link =&lt;br /&gt;
|prog_lang =&lt;br /&gt;
|supply = 4 节[[电池|AAA]]电池,&amp;lt;br&amp;gt;1节CR1616或CR1620纽扣电池&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI-82&#039;&#039;&#039;是一款由[[德州仪器]]于[[1993年]]发行的[[图形计算器]]，来取代其前身产品{{Link-en|TI-81|TI-81|TI-81}}，其继承了{{Link-en|TI-81|TI-81|TI-81}}上的功能集和96X64像素的显示屏。TI-82相较于前一年发布的[[TI-85]]拥有更友好的操作方式。&lt;br /&gt;
&lt;br /&gt;
TI-82和[[TI-85]]采用了同样的6兆赫[[Zilog Z80]][[微处理器]]&amp;lt;ref name=&amp;quot;auto&amp;quot;&amp;gt;{{cite web|url=http://www.math.umbc.edu/~campbell/Calculators/TI8x/|last=Campbell|first=Robert|title=TI-82/83/85/86 Mathematics Use|year=2001|publisher=UMBC}}&amp;lt;/ref&amp;gt;，其被认作是[[TI-83]]的前身。&lt;br /&gt;
&lt;br /&gt;
TI-82已经在2004年停产。&lt;br /&gt;
==发展==&lt;br /&gt;
和{{Link-en|TI-81|TI-81|TI-81}}相比较，TI-82增加了一个数据串口，从而允许使用者可以方便的使用线缆在计算器与[[电脑]]或另一台计算器之间传输数据与程序。在软件功能上，TI-82添加了两种新的作图类型（polar、sequence），[[矩阵]]限制被提高至50*50。一个重要的更改为TI-82使用了[[汇编语言]]而不是德州仪器的[[TI-BASIC]]，这个变化使得程序拥有更高的性能及更好的灵活性。&lt;br /&gt;
&lt;br /&gt;
==后续沿革==&lt;br /&gt;
TI-82分别在1999年与2001年有两次改款。&lt;br /&gt;
===1999年===&lt;br /&gt;
1999年版本的TI-82外形极其类似于{{Link-en|TI-73|TI-73 series|TI-73}}、[[TI-83|TI-83x]]和{{Link-en|TI-89|TI-89 series|TI-89}}。这个版本使用水平的屏幕来取代德州仪器在旧产品上一贯采用的倾斜屏幕设计。&lt;br /&gt;
===2001年===&lt;br /&gt;
2001年版本取消了屏幕边框设计，并且降低了[[印刷电路板]]成本。这个版本又被称为TI-82 &amp;quot;Parcus&amp;quot;。&amp;lt;ref&amp;gt;{{cite web|url=http://datamath.org/Graphing/TI-82_1.htm|title=DATAMATH|publisher=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TI-82 STATS===&lt;br /&gt;
TI-82 STATS是TI-82的一个延伸版本，也是TI-82的最后一个机型，这个版本于2002年在[[欧洲]]首次发售。相对于普通版本的TI-82，TI-82 STATS增加了[[微分]]和[[积分]]，完善了[[复数]]、[[金融]]、[[统计]]功能。在一定意义上，这个版本的TI-82可以和[[TI-83|TI-83x]]相比较。&lt;br /&gt;
&lt;br /&gt;
==技术信息==&lt;br /&gt;
*&#039;&#039;&#039;[[处理器|CPU]]:&#039;&#039;&#039; [[Zilog Z80]] CPU,&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt; 6 [[Megahertz|MHz]]&lt;br /&gt;
*&#039;&#039;&#039;[[RAM]]:&#039;&#039;&#039; 32 [[Kilobyte|KB]], (28 KB 使用者可用)&lt;br /&gt;
*&#039;&#039;&#039;[[ROM]]:&#039;&#039;&#039; 128 KB 不可升级&lt;br /&gt;
*&#039;&#039;&#039;[[屏幕]]&#039;&#039;&#039;&lt;br /&gt;
**文字: 21×8 字符&lt;br /&gt;
**图形: 128×64 像素&lt;br /&gt;
*&#039;&#039;&#039;连接端口:&#039;&#039;&#039; 2.5 mm I/O port&lt;br /&gt;
*&#039;&#039;&#039;[[电源]]:&#039;&#039;&#039; 4×[[AAA battery|AAA]], 1×CR1616 or CR1620&lt;br /&gt;
*&#039;&#039;&#039;[[编程语言]]:&#039;&#039;&#039; [[TI-BASIC]], Z80 [[Assembly language|Assembly]]&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
* [[TI图形计算器对比]]&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
{{Commons category}}&lt;br /&gt;
* [http://education.ti.com/educationportal/sites/US/nonProductSingle/about_press_release_cg-388.html Texas Instruments press release] March 30, 1993&lt;br /&gt;
* [http://www.ticalc.org ticalc.org] – The largest archive of TI programs available.&lt;br /&gt;
*[http://calcg.org/ CalcG.org] - Very organized and large archive of games and programs.&lt;br /&gt;
&lt;br /&gt;
{{TI-calc}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Ti-82}}&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;br /&gt;
[[Category:德州仪器计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Module:Citation/CS1/Whitelist&amp;diff=7456</id>
		<title>Module:Citation/CS1/Whitelist</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Module:Citation/CS1/Whitelist&amp;diff=7456"/>
		<updated>2016-06-10T12:07:20Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​导入1个版本：Template:Cite web&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
--[[--------------------------&amp;lt; P A R A M E T E R S   N O T   S U P P O R T E D &amp;gt;------------------------------&lt;br /&gt;
&lt;br /&gt;
This is a list of parameters that once were but now are no longer supported:&lt;br /&gt;
&lt;br /&gt;
	[&#039;albumlink&#039;] = nil,			-- unique alias of titlelink used by old cite AV media notes&lt;br /&gt;
	[&#039;albumtype&#039;] = nil,			-- controled inappropriate functionality in the old cite AV media notes&lt;br /&gt;
	[&#039;artist&#039;] = nil,				-- unique alias of others used by old cite AV media notes&lt;br /&gt;
	[&#039;Author&#039;] = nil,				-- non-standard capitalization&lt;br /&gt;
	[&#039;authorformat&#039;] = nil,			-- primarily used to support Vancouver format which functionality now part of name-list-format&lt;br /&gt;
	[&#039;author-format&#039;] = nil,		-- primarily used to support Vancouver format which functionality now part of name-list-format&lt;br /&gt;
	[&#039;author-name-separator&#039;] = nil,-- primarily used to support Vancouver format which functionality now part of name-list-format&lt;br /&gt;
	[&#039;author-separator&#039;] = nil,		-- primarily used to support Vancouver format which functionality now part of name-list-format&lt;br /&gt;
	[&#039;began&#039;] = nil,				-- module handles date ranges; cite episode and cite series&lt;br /&gt;
	[&#039;chapterlink&#039;] = nil,			-- if ever necessary to link to a chapter article, |chapter= can be wikilinked &lt;br /&gt;
	[&#039;chapter-link&#039;] = nil,			-- &lt;br /&gt;
	[&#039;cointerviewers&#039;] = nil,		-- unique alias of others used by old cite interview&lt;br /&gt;
	[&#039;day&#039;] = nil,					-- deprecated in {{citation/core}} and somehow undeprecated in Module:Citation/CS1 and now finally removed&lt;br /&gt;
	[&#039;director&#039;] = nil,				-- unique alias of author used by old cite DVD-notes&lt;br /&gt;
	[&#039;DoiBroken&#039;] = nil,			-- not used, non-standard captialization&lt;br /&gt;
	[&#039;Editor&#039;] = nil,				-- non-standard capitalization&lt;br /&gt;
	[&#039;editorformat&#039;] = nil,			-- primarily used to support Vancouver format which functionality now part of name-list-format&lt;br /&gt;
	[&#039;EditorSurname&#039;] = nil,		-- non-standard capitalization&lt;br /&gt;
	[&#039;editor-format&#039;] = nil,		-- primarily used to support Vancouver format which functionality now part of name-list-format&lt;br /&gt;
	[&#039;EditorGiven&#039;] = nil,			-- non-standard capitalization&lt;br /&gt;
	[&#039;editor-name-separator&#039;] = nil,-- primarily used to support Vancouver format which functionality now part of name-list-format&lt;br /&gt;
	[&#039;editor-separator&#039;] = nil,		-- primarily used to support Vancouver format which functionality now part of name-list-format&lt;br /&gt;
	[&#039;Embargo&#039;] = nil,				-- not used, non-standard capitalization&lt;br /&gt;
	[&#039;ended&#039;] = nil,				-- module handles date ranges; cite episode and cite series&lt;br /&gt;
	[&#039;month&#039;] = nil,				-- functionality supported by |date=&lt;br /&gt;
	[&#039;name-separator&#039;] = nil,		-- primarily used to support Vancouver format which functionality now part of name-list-format&lt;br /&gt;
	[&#039;notestitle&#039;] = nil,			-- unique alias of chapter used by old cite AV media notes&lt;br /&gt;
	[&#039;PPrefix&#039;] = nil,				-- non-standard capitalization&lt;br /&gt;
	[&#039;PPPrefix&#039;] = nil,				-- not used, non-standard capitalization&lt;br /&gt;
	[&#039;pp-prefix&#039;] = nil,			-- not used, not documented&lt;br /&gt;
	[&#039;p-prefix&#039;] = nil,				-- not used, not documented&lt;br /&gt;
	[&#039;publisherid&#039;] = nil,			-- unique alias of id used by old cite AV media notes and old cite DVD-notes&lt;br /&gt;
	[&#039;Ref&#039;] = nil,					-- non-statndard capitalization&lt;br /&gt;
	[&#039;separator&#039;] = nil,			-- this functionality now provided by |mode=&lt;br /&gt;
	[&#039;titleyear&#039;] = nil,			-- unique alias of origyear used by old cite DVD-notes&lt;br /&gt;
&lt;br /&gt;
	[&#039;Author#&#039;] = nil,				-- non-standard capitalization&lt;br /&gt;
	[&#039;authors#&#039;] = nil,				-- no need for multiple lists of author names&lt;br /&gt;
	[&#039;Editor#&#039;] = nil,				-- non-standard capitalization&lt;br /&gt;
	[&#039;editors#&#039;] = nil,				-- no need for multiple lists of editor names&lt;br /&gt;
	[&#039;EditorGiven#&#039;] = nil,			-- non-standard capitalization&lt;br /&gt;
	[&#039;EditorSurname#&#039;] = nil,		-- non-standard capitalization&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S U P P O R T E D   P A R A M E T E R S &amp;gt;--------------------------------------&lt;br /&gt;
&lt;br /&gt;
Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values:&lt;br /&gt;
	true - these parameters are valid and supported parameters&lt;br /&gt;
	false - these parameters are deprecated but still supported&lt;br /&gt;
	nil - these parameters are no longer supported (when setting a parameter to nil, leave a comment stating the reasons for invalidating the parameter)&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local whitelist = {}&lt;br /&gt;
&lt;br /&gt;
local basic_arguments = {&lt;br /&gt;
	[&#039;accessdate&#039;] = true,&lt;br /&gt;
	[&#039;access-date&#039;] = true,&lt;br /&gt;
	[&#039;agency&#039;] = true,&lt;br /&gt;
	[&#039;airdate&#039;] = true,&lt;br /&gt;
	[&#039;air-date&#039;] = true,&lt;br /&gt;
	[&#039;archivedate&#039;] = true,&lt;br /&gt;
	[&#039;archive-date&#039;] = true,&lt;br /&gt;
	[&#039;archive-format&#039;] = true,&lt;br /&gt;
	[&#039;archiveurl&#039;] = true,&lt;br /&gt;
	[&#039;archive-url&#039;] = true,&lt;br /&gt;
	[&#039;article&#039;] = true,&lt;br /&gt;
	[&#039;arxiv&#039;] = true,&lt;br /&gt;
	[&#039;ARXIV&#039;] = true,&lt;br /&gt;
	[&#039;asin&#039;] = true,&lt;br /&gt;
	[&#039;ASIN&#039;] = true,&lt;br /&gt;
	[&#039;asin-tld&#039;] = true,&lt;br /&gt;
	[&#039;ASIN-TLD&#039;] = true,&lt;br /&gt;
	[&#039;at&#039;] = true,&lt;br /&gt;
	[&#039;author&#039;] = true,&lt;br /&gt;
	[&#039;author-first&#039;] = true,&lt;br /&gt;
	[&#039;author-last&#039;] = true,&lt;br /&gt;
	[&#039;authorlink&#039;] = true,&lt;br /&gt;
	[&#039;author-link&#039;] = true,&lt;br /&gt;
	[&#039;authormask&#039;] = true,&lt;br /&gt;
	[&#039;author-mask&#039;] = true,&lt;br /&gt;
	[&#039;authors&#039;] = true,&lt;br /&gt;
	[&#039;bibcode&#039;] = true,&lt;br /&gt;
	[&#039;BIBCODE&#039;] = true,&lt;br /&gt;
	[&#039;booktitle&#039;] = true,&lt;br /&gt;
	[&#039;book-title&#039;] = true,&lt;br /&gt;
	[&#039;callsign&#039;] = true,			-- cite interview&lt;br /&gt;
	[&#039;call-sign&#039;] = true,			-- cite interview&lt;br /&gt;
	[&#039;cartography&#039;] = true,&lt;br /&gt;
	[&#039;chapter&#039;] = true,&lt;br /&gt;
	[&#039;chapter-format&#039;] = true,&lt;br /&gt;
	[&#039;chapterurl&#039;] = true,&lt;br /&gt;
	[&#039;chapter-url&#039;] = true,&lt;br /&gt;
	[&#039;city&#039;] = true,				-- cite interview, cite episode, cite serial&lt;br /&gt;
	[&#039;class&#039;] = true,				-- cite arxiv and arxiv identifiers&lt;br /&gt;
	[&#039;coauthor&#039;] = false,			-- deprecated&lt;br /&gt;
	[&#039;coauthors&#039;] = false,			-- deprecated&lt;br /&gt;
	[&#039;conference&#039;] = true,&lt;br /&gt;
	[&#039;conference-format&#039;] = true,&lt;br /&gt;
	[&#039;conferenceurl&#039;] = true,&lt;br /&gt;
	[&#039;conference-url&#039;] = true,&lt;br /&gt;
	[&#039;contribution&#039;] = true,&lt;br /&gt;
	[&#039;contribution-format&#039;] = true,&lt;br /&gt;
	[&#039;contributionurl&#039;] = true,&lt;br /&gt;
	[&#039;contribution-url&#039;] = true,&lt;br /&gt;
	[&#039;contributor&#039;] = true,&lt;br /&gt;
	[&#039;contributor-first&#039;] = true,&lt;br /&gt;
	[&#039;contributor-last&#039;] = true,&lt;br /&gt;
	[&#039;contributor-link&#039;] = true,&lt;br /&gt;
	[&#039;contributor-mask&#039;] = true,&lt;br /&gt;
	[&#039;credits&#039;] = true,				-- cite episode, cite serial&lt;br /&gt;
	[&#039;date&#039;] = true,&lt;br /&gt;
	[&#039;deadurl&#039;] = true,&lt;br /&gt;
	[&#039;dead-url&#039;] = true,&lt;br /&gt;
	[&#039;degree&#039;] = true,&lt;br /&gt;
	[&#039;department&#039;] = true,&lt;br /&gt;
	[&#039;dictionary&#039;] = true,&lt;br /&gt;
	[&#039;displayauthors&#039;] = true,&lt;br /&gt;
	[&#039;display-authors&#039;] = true,&lt;br /&gt;
	[&#039;displayeditors&#039;] = true,&lt;br /&gt;
	[&#039;display-editors&#039;] = true,&lt;br /&gt;
	[&#039;docket&#039;] = true,&lt;br /&gt;
	[&#039;doi&#039;] = true,&lt;br /&gt;
	[&#039;DOI&#039;] = true,&lt;br /&gt;
	[&#039;doi-broken&#039;] = true,&lt;br /&gt;
	[&#039;doi_brokendate&#039;] = true,&lt;br /&gt;
	[&#039;doi-broken-date&#039;] = true,&lt;br /&gt;
	[&#039;doi_inactivedate&#039;] = true,&lt;br /&gt;
	[&#039;doi-inactive-date&#039;] = true,&lt;br /&gt;
	[&#039;edition&#039;] = true,&lt;br /&gt;
	[&#039;editor&#039;] = true,&lt;br /&gt;
	[&#039;editor-first&#039;] = true,&lt;br /&gt;
	[&#039;editor-given&#039;] = true,&lt;br /&gt;
	[&#039;editor-last&#039;] = true,&lt;br /&gt;
	[&#039;editorlink&#039;] = true,&lt;br /&gt;
	[&#039;editor-link&#039;] = true,&lt;br /&gt;
	[&#039;editormask&#039;] = true,&lt;br /&gt;
	[&#039;editor-mask&#039;] = true,&lt;br /&gt;
	[&#039;editors&#039;] = true,&lt;br /&gt;
	[&#039;editor-surname&#039;] = true,&lt;br /&gt;
	[&#039;embargo&#039;] = true,&lt;br /&gt;
	[&#039;encyclopaedia&#039;] = true,&lt;br /&gt;
	[&#039;encyclopedia&#039;] = true,&lt;br /&gt;
	[&#039;entry&#039;] = true,&lt;br /&gt;
	[&#039;episode&#039;] = true,															-- cite serial only TODO: make available to cite episode?&lt;br /&gt;
	[&#039;episodelink&#039;] = true,														-- cite episode and cite serial&lt;br /&gt;
	[&#039;episode-link&#039;] = true,													-- cite episode and cite serial&lt;br /&gt;
	[&#039;eprint&#039;] = true,															-- cite arxiv and arxiv identifiers&lt;br /&gt;
	[&#039;event&#039;] = true,&lt;br /&gt;
	[&#039;event-format&#039;] = true,&lt;br /&gt;
	[&#039;eventurl&#039;] = true,&lt;br /&gt;
	[&#039;event-url&#039;] = true,&lt;br /&gt;
	[&#039;first&#039;] = true,&lt;br /&gt;
	[&#039;format&#039;] = true,&lt;br /&gt;
	[&#039;given&#039;] = true,&lt;br /&gt;
	[&#039;host&#039;] = true,&lt;br /&gt;
	[&#039;id&#039;] = true,&lt;br /&gt;
	[&#039;ID&#039;] = true,&lt;br /&gt;
	[&#039;ignoreisbnerror&#039;] = true,&lt;br /&gt;
	[&#039;ignore-isbn-error&#039;] = true,&lt;br /&gt;
	[&#039;in&#039;] = true,&lt;br /&gt;
	[&#039;inset&#039;] = true,&lt;br /&gt;
	[&#039;institution&#039;] = true,&lt;br /&gt;
	[&#039;interviewer&#039;] = true,				--cite interview&lt;br /&gt;
	[&#039;interviewers&#039;] = true,			--cite interview&lt;br /&gt;
	[&#039;isbn&#039;] = true,&lt;br /&gt;
	[&#039;ISBN&#039;] = true,&lt;br /&gt;
	[&#039;isbn13&#039;] = true,&lt;br /&gt;
	[&#039;ISBN13&#039;] = true,&lt;br /&gt;
	[&#039;ismn&#039;] = true,&lt;br /&gt;
	[&#039;ISMN&#039;] = true,&lt;br /&gt;
	[&#039;issn&#039;] = true,&lt;br /&gt;
	[&#039;ISSN&#039;] = true,&lt;br /&gt;
	[&#039;issue&#039;] = true,&lt;br /&gt;
	[&#039;jfm&#039;] = true,&lt;br /&gt;
	[&#039;JFM&#039;] = true,&lt;br /&gt;
	[&#039;journal&#039;] = true,&lt;br /&gt;
	[&#039;jstor&#039;] = true,&lt;br /&gt;
	[&#039;JSTOR&#039;] = true,&lt;br /&gt;
	[&#039;language&#039;] = true,&lt;br /&gt;
	[&#039;last&#039;] = true,&lt;br /&gt;
	[&#039;lastauthoramp&#039;] = true,&lt;br /&gt;
	[&#039;last-author-amp&#039;] = true,&lt;br /&gt;
	[&#039;laydate&#039;] = true,&lt;br /&gt;
	[&#039;lay-date&#039;] = true,&lt;br /&gt;
	[&#039;laysource&#039;] = true,&lt;br /&gt;
	[&#039;lay-source&#039;] = true,&lt;br /&gt;
	[&#039;laysummary&#039;] = true,&lt;br /&gt;
	[&#039;lay-summary&#039;] = true,&lt;br /&gt;
	[&#039;lay-format&#039;] = true,&lt;br /&gt;
	[&#039;layurl&#039;] = true,&lt;br /&gt;
	[&#039;lay-url&#039;] = true,&lt;br /&gt;
	[&#039;lccn&#039;] = true,&lt;br /&gt;
	[&#039;LCCN&#039;] = true,&lt;br /&gt;
	[&#039;location&#039;] = true,&lt;br /&gt;
	[&#039;magazine&#039;] = true,&lt;br /&gt;
	[&#039;mailinglist&#039;] = true,				-- cite mailing list only&lt;br /&gt;
	[&#039;mailing-list&#039;] = true,			-- cite mailing list only&lt;br /&gt;
	[&#039;map&#039;] = true,						-- cite map only&lt;br /&gt;
	[&#039;map-format&#039;] = true,				-- cite map only&lt;br /&gt;
	[&#039;mapurl&#039;] = true,					-- cite map only&lt;br /&gt;
	[&#039;map-url&#039;] = true,					-- cite map only&lt;br /&gt;
	[&#039;medium&#039;] = true,&lt;br /&gt;
	[&#039;message-id&#039;] = true,			-- cite newsgroup&lt;br /&gt;
	[&#039;minutes&#039;] = true,&lt;br /&gt;
	[&#039;mode&#039;] = true,&lt;br /&gt;
	[&#039;mr&#039;] = true,&lt;br /&gt;
	[&#039;MR&#039;] = true,&lt;br /&gt;
	[&#039;name-list-format&#039;] = true,&lt;br /&gt;
	[&#039;network&#039;] = true,&lt;br /&gt;
	[&#039;newsgroup&#039;] = true,&lt;br /&gt;
	[&#039;newspaper&#039;] = true,&lt;br /&gt;
	[&#039;nocat&#039;] = true,&lt;br /&gt;
	[&#039;no-cat&#039;] = true,&lt;br /&gt;
	[&#039;nopp&#039;] = true,&lt;br /&gt;
	[&#039;no-pp&#039;] = true,&lt;br /&gt;
	[&#039;notracking&#039;] = true,&lt;br /&gt;
	[&#039;no-tracking&#039;] = true,&lt;br /&gt;
	[&#039;number&#039;] = true,&lt;br /&gt;
	[&#039;oclc&#039;] = true,&lt;br /&gt;
	[&#039;OCLC&#039;] = true,&lt;br /&gt;
	[&#039;ol&#039;] = true,&lt;br /&gt;
	[&#039;OL&#039;] = true,&lt;br /&gt;
	[&#039;origyear&#039;] = true,&lt;br /&gt;
	[&#039;orig-year&#039;] = true,&lt;br /&gt;
	[&#039;osti&#039;] = true,&lt;br /&gt;
	[&#039;OSTI&#039;] = true,&lt;br /&gt;
	[&#039;others&#039;] = true,&lt;br /&gt;
	[&#039;p&#039;] = true,&lt;br /&gt;
	[&#039;page&#039;] = true,&lt;br /&gt;
	[&#039;pages&#039;] = true,&lt;br /&gt;
	[&#039;people&#039;] = true,&lt;br /&gt;
	[&#039;periodical&#039;] = true,&lt;br /&gt;
	[&#039;place&#039;] = true,&lt;br /&gt;
	[&#039;pmc&#039;] = true,&lt;br /&gt;
	[&#039;PMC&#039;] = true,&lt;br /&gt;
	[&#039;pmid&#039;] = true,&lt;br /&gt;
	[&#039;PMID&#039;] = true,&lt;br /&gt;
	[&#039;postscript&#039;] = true,&lt;br /&gt;
	[&#039;pp&#039;] = true,&lt;br /&gt;
	[&#039;program&#039;] = true,				-- cite interview&lt;br /&gt;
	[&#039;publicationdate&#039;] = true,&lt;br /&gt;
	[&#039;publication-date&#039;] = true,&lt;br /&gt;
	[&#039;publicationplace&#039;] = true,&lt;br /&gt;
	[&#039;publication-place&#039;] = true,&lt;br /&gt;
	[&#039;publisher&#039;] = true,&lt;br /&gt;
	[&#039;quotation&#039;] = true,&lt;br /&gt;
	[&#039;quote&#039;] = true,&lt;br /&gt;
	[&#039;ref&#039;] = true,&lt;br /&gt;
	[&#039;registration&#039;] = true,&lt;br /&gt;
	[&#039;rfc&#039;] = true,&lt;br /&gt;
	[&#039;RFC&#039;] = true,&lt;br /&gt;
	[&#039;scale&#039;] = true,&lt;br /&gt;
	[&#039;script-chapter&#039;] = true,&lt;br /&gt;
	[&#039;script-title&#039;] = true,&lt;br /&gt;
	[&#039;season&#039;] = true,&lt;br /&gt;
	[&#039;section&#039;] = true,&lt;br /&gt;
	[&#039;section-format&#039;] = true,&lt;br /&gt;
	[&#039;sections&#039;] = true,					-- cite map only&lt;br /&gt;
	[&#039;sectionurl&#039;] = true,&lt;br /&gt;
	[&#039;section-url&#039;] = true,&lt;br /&gt;
	[&#039;series&#039;] = true,&lt;br /&gt;
	[&#039;serieslink&#039;] = true,&lt;br /&gt;
	[&#039;series-link&#039;] = true,&lt;br /&gt;
	[&#039;seriesno&#039;] = true,&lt;br /&gt;
	[&#039;series-no&#039;] = true,&lt;br /&gt;
	[&#039;seriesnumber&#039;] = true,&lt;br /&gt;
	[&#039;series-number&#039;] = true,&lt;br /&gt;
	[&#039;series-separator&#039;] = true,&lt;br /&gt;
	[&#039;sheet&#039;] = true,															-- cite map only&lt;br /&gt;
	[&#039;sheets&#039;] = true,															-- cite map only&lt;br /&gt;
	[&#039;ssrn&#039;] = true,&lt;br /&gt;
	[&#039;SSRN&#039;] = true,&lt;br /&gt;
	[&#039;station&#039;] = true,&lt;br /&gt;
	[&#039;subject&#039;] = true,&lt;br /&gt;
	[&#039;subjectlink&#039;] = true,&lt;br /&gt;
	[&#039;subject-link&#039;] = true,&lt;br /&gt;
	[&#039;subscription&#039;] = true,&lt;br /&gt;
	[&#039;surname&#039;] = true,&lt;br /&gt;
	[&#039;template doc demo&#039;] = true,&lt;br /&gt;
	[&#039;template-doc-demo&#039;] = true,&lt;br /&gt;
	[&#039;time&#039;] = true,&lt;br /&gt;
	[&#039;timecaption&#039;] = true,&lt;br /&gt;
	[&#039;time-caption&#039;] = true,&lt;br /&gt;
	[&#039;title&#039;] = true,&lt;br /&gt;
	[&#039;titlelink&#039;] = true,&lt;br /&gt;
	[&#039;title-link&#039;] = true,&lt;br /&gt;
	[&#039;title_zh&#039;] = true,&lt;br /&gt;
	[&#039;trans_chapter&#039;] = true,&lt;br /&gt;
	[&#039;trans-chapter&#039;] = true,&lt;br /&gt;
	[&#039;trans-map&#039;] = true,&lt;br /&gt;
	[&#039;transcript&#039;] = true,&lt;br /&gt;
	[&#039;transcript-format&#039;] = true,&lt;br /&gt;
	[&#039;transcripturl&#039;] = true,&lt;br /&gt;
	[&#039;transcript-url&#039;] = true,&lt;br /&gt;
	[&#039;trans_title&#039;] = true,&lt;br /&gt;
	[&#039;trans-title&#039;] = true,&lt;br /&gt;
	[&#039;translator&#039;] = true,&lt;br /&gt;
	[&#039;translator-first&#039;] = true,&lt;br /&gt;
	[&#039;translator-last&#039;] = true,&lt;br /&gt;
	[&#039;translator-link&#039;] = true,&lt;br /&gt;
	[&#039;translator-mask&#039;] = true,&lt;br /&gt;
	[&#039;type&#039;] = true,&lt;br /&gt;
	[&#039;url&#039;] = true,&lt;br /&gt;
	[&#039;URL&#039;] = true,&lt;br /&gt;
	[&#039;vauthors&#039;] = true,&lt;br /&gt;
	[&#039;veditors&#039;] = true,&lt;br /&gt;
	[&#039;version&#039;] = true,&lt;br /&gt;
	[&#039;via&#039;] = true,&lt;br /&gt;
	[&#039;volume&#039;] = true,&lt;br /&gt;
	[&#039;website&#039;] = true,&lt;br /&gt;
	[&#039;work&#039;] = true,&lt;br /&gt;
	[&#039;year&#039;] = true,&lt;br /&gt;
	[&#039;zbl&#039;] = true,&lt;br /&gt;
	[&#039;ZBL&#039;] = true,&lt;br /&gt;
	[&#039;unified&#039;] = true,&lt;br /&gt;
	[&#039;csbn&#039;] = true,&lt;br /&gt;
	[&#039;CSBN&#039;] = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local numbered_arguments = {&lt;br /&gt;
	[&#039;author#&#039;] = true,&lt;br /&gt;
	[&#039;author-first#&#039;] = true,&lt;br /&gt;
	[&#039;author#-first&#039;] = true,&lt;br /&gt;
	[&#039;author-last#&#039;] = true,&lt;br /&gt;
	[&#039;author#-last&#039;] = true,&lt;br /&gt;
	[&#039;author-link#&#039;] = true,&lt;br /&gt;
	[&#039;author#link&#039;] = true,&lt;br /&gt;
	[&#039;author#-link&#039;] = true,&lt;br /&gt;
	[&#039;authorlink#&#039;] = true,&lt;br /&gt;
	[&#039;author-mask#&#039;] = true,&lt;br /&gt;
	[&#039;author#mask&#039;] = true,&lt;br /&gt;
	[&#039;author#-mask&#039;] = true,&lt;br /&gt;
	[&#039;authormask#&#039;] = true,&lt;br /&gt;
	[&#039;contributor#&#039;] = true,&lt;br /&gt;
	[&#039;contributor-first#&#039;] = true,&lt;br /&gt;
	[&#039;contributor#-first&#039;] = true,&lt;br /&gt;
	[&#039;contributor-last#&#039;] = true,&lt;br /&gt;
	[&#039;contributor#-last&#039;] = true,&lt;br /&gt;
	[&#039;contributor-link#&#039;] = true,&lt;br /&gt;
	[&#039;contributor#-link&#039;] = true,&lt;br /&gt;
	[&#039;contributor-mask#&#039;] = true,&lt;br /&gt;
	[&#039;contributor#-mask&#039;] = true,&lt;br /&gt;
	[&#039;editor#&#039;] = true,&lt;br /&gt;
	[&#039;editor-first#&#039;] = true,&lt;br /&gt;
	[&#039;editor#-first&#039;] = true,&lt;br /&gt;
	[&#039;editor#-given&#039;] = true,&lt;br /&gt;
	[&#039;editor-given#&#039;] = true,&lt;br /&gt;
	[&#039;editor-last#&#039;] = true,&lt;br /&gt;
	[&#039;editor#-last&#039;] = true,&lt;br /&gt;
	[&#039;editor-link#&#039;] = true,&lt;br /&gt;
	[&#039;editor#link&#039;] = true,&lt;br /&gt;
	[&#039;editor#-link&#039;] = true,&lt;br /&gt;
	[&#039;editorlink#&#039;] = true,&lt;br /&gt;
	[&#039;editor-mask#&#039;] = true,&lt;br /&gt;
	[&#039;editor#mask&#039;] = true,&lt;br /&gt;
	[&#039;editor#-mask&#039;] = true,&lt;br /&gt;
	[&#039;editormask#&#039;] = true,&lt;br /&gt;
	[&#039;editor#-surname&#039;] = true,&lt;br /&gt;
	[&#039;editor-surname#&#039;] = true,&lt;br /&gt;
	[&#039;first#&#039;] = true,&lt;br /&gt;
	[&#039;given#&#039;] = true,&lt;br /&gt;
	[&#039;last#&#039;] = true,&lt;br /&gt;
	[&#039;subject#&#039;] = true,&lt;br /&gt;
	[&#039;subject-link#&#039;] = true,&lt;br /&gt;
	[&#039;subject#link&#039;] = true,&lt;br /&gt;
	[&#039;subject#-link&#039;] = true,&lt;br /&gt;
	[&#039;subjectlink#&#039;] = true,&lt;br /&gt;
	[&#039;surname#&#039;] = true,&lt;br /&gt;
	[&#039;translator#&#039;] = true,&lt;br /&gt;
	[&#039;translator-first#&#039;] = true,&lt;br /&gt;
	[&#039;translator#-first&#039;] = true,&lt;br /&gt;
	[&#039;translator-last#&#039;] = true,&lt;br /&gt;
	[&#039;translator#-last&#039;] = true,&lt;br /&gt;
	[&#039;translator-link#&#039;] = true,&lt;br /&gt;
	[&#039;translator#-link&#039;] = true,&lt;br /&gt;
	[&#039;translator-mask#&#039;] = true,&lt;br /&gt;
	[&#039;translator#-mask&#039;] = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return {basic_arguments = basic_arguments, numbered_arguments = numbered_arguments};&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Module:Citation/CS1/Date_validation&amp;diff=7454</id>
		<title>Module:Citation/CS1/Date validation</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Module:Citation/CS1/Date_validation&amp;diff=7454"/>
		<updated>2016-06-10T12:07:20Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​导入1个版本：Template:Cite web&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ V A L I D _ A C C E S S D A T E &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns true if:&lt;br /&gt;
	Wikipedia start date &amp;lt;= accessdate &amp;lt; today + 2 days&lt;br /&gt;
&lt;br /&gt;
Wikipedia start date is 2001-01-15T00:00:00 UTC which is 979516800 seconds after 1970-01-01T00:00:00 UTC (the start of Unix time)&lt;br /&gt;
accessdate is the date provided in |accessdate= at time 00:00:00 UTC&lt;br /&gt;
today is the current date at time 00:00:00 UTC plus 48 hours&lt;br /&gt;
	if today is 2015-01-01T00:00:00 then&lt;br /&gt;
		adding 24 hours gives 2015-01-02T00:00:00 – one second more than today&lt;br /&gt;
		adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_valid_accessdate (accessdate)&lt;br /&gt;
	local lang = mw.getContentLanguage();&lt;br /&gt;
	local good1, good2;&lt;br /&gt;
	local access_ts, tomorrow_ts;												-- to hold unix time stamps representing the dates&lt;br /&gt;
		&lt;br /&gt;
	accessdate = accessdate:gsub(&amp;quot;年&amp;quot;, &amp;quot;-&amp;quot;);&lt;br /&gt;
	accessdate = accessdate:gsub(&amp;quot;月&amp;quot;, &amp;quot;-&amp;quot;);&lt;br /&gt;
	accessdate = accessdate:gsub(&amp;quot;日&amp;quot;, &amp;quot;-&amp;quot;);&lt;br /&gt;
	accessdate = accessdate:gsub(&amp;quot;-$&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
	good1, access_ts = pcall( lang.formatDate, lang, &#039;U&#039;, accessdate );			-- convert accessdate value to unix timesatmp &lt;br /&gt;
	good2, tomorrow_ts = pcall( lang.formatDate, lang, &#039;U&#039;, &#039;today + 2 days&#039; );	-- today midnight + 2 days is one second more than all day tomorrow&lt;br /&gt;
	&lt;br /&gt;
	if good1 and good2 then&lt;br /&gt;
		access_ts = tonumber (access_ts);										-- convert to numbers for the comparison&lt;br /&gt;
		tomorrow_ts = tonumber (tomorrow_ts);&lt;br /&gt;
	else&lt;br /&gt;
		return false;															-- one or both failed to convert to unix time stamp&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if 979516800 &amp;lt;= access_ts and access_ts &amp;lt; tomorrow_ts then					-- Wikipedia start date &amp;lt;= accessdate &amp;lt; tomorrow&#039;s date&lt;br /&gt;
		return true;&lt;br /&gt;
	else&lt;br /&gt;
		return false;															-- accessdate out of range&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; G E T _ M O N T H _ N U M B E R &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns a number according to the month in a date: 1 for January, etc.  Capitalization and spelling must be correct. If not a valid month, returns 0&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function get_month_number (month)&lt;br /&gt;
local long_months = {[&#039;January&#039;]=1, [&#039;February&#039;]=2, [&#039;March&#039;]=3, [&#039;April&#039;]=4, [&#039;May&#039;]=5, [&#039;June&#039;]=6, [&#039;July&#039;]=7, [&#039;August&#039;]=8, [&#039;September&#039;]=9, [&#039;October&#039;]=10, [&#039;November&#039;]=11, [&#039;December&#039;]=12};&lt;br /&gt;
local short_months = {[&#039;Jan&#039;]=1, [&#039;Feb&#039;]=2, [&#039;Mar&#039;]=3, [&#039;Apr&#039;]=4, [&#039;May&#039;]=5, [&#039;Jun&#039;]=6, [&#039;Jul&#039;]=7, [&#039;Aug&#039;]=8, [&#039;Sep&#039;]=9, [&#039;Oct&#039;]=10, [&#039;Nov&#039;]=11, [&#039;Dec&#039;]=12};&lt;br /&gt;
local zh_months = {[&#039;1月&#039;]=1, [&#039;2月&#039;]=2, [&#039;3月&#039;]=3, [&#039;4月&#039;]=4, [&#039;5月&#039;]=5, [&#039;6月&#039;]=6, [&#039;7月&#039;]=7, [&#039;8月&#039;]=8, [&#039;9月&#039;]=9, [&#039;10月&#039;]=10, [&#039;11月&#039;]=11, [&#039;12月&#039;]=12}; -- LOCAL&lt;br /&gt;
local temp;&lt;br /&gt;
	temp=long_months[month];&lt;br /&gt;
	if temp then return temp; end				-- if month is the long-form name&lt;br /&gt;
	temp=short_months[month];&lt;br /&gt;
	if temp then return temp; end				-- if month is the short-form name&lt;br /&gt;
	temp=zh_months[month]; -- LOCAL&lt;br /&gt;
	if temp then return temp; end				-- if month is in Chinese -- LOCAL&lt;br /&gt;
	return 0;									-- misspelled, improper case, or not a month name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; G E T _ S E A S O N _ N U M B E R &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns a number according to the sequence of seasons in a year: 1 for Winter, etc.  Capitalization and spelling must be correct. If not a valid season, returns 0&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function get_season_number (season)&lt;br /&gt;
local season_list = {[&#039;Winter&#039;]=21, [&#039;Spring&#039;]=22, [&#039;Summer&#039;]=23, [&#039;Fall&#039;]=24, [&#039;Autumn&#039;]=24};	-- make sure these numbers do not overlap month numbers&lt;br /&gt;
local temp;&lt;br /&gt;
	temp=season_list[season];&lt;br /&gt;
	if temp then return temp; end												-- if season is a valid name return its number&lt;br /&gt;
	return 0;																	-- misspelled, improper case, or not a season name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ P R O P E R _ N A M E &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns a non-zero number if date contains a recognized proper name.  Capitalization and spelling must be correct.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_proper_name (name)&lt;br /&gt;
local name_list = {[&#039;Christmas&#039;]=31}&lt;br /&gt;
local temp;&lt;br /&gt;
	temp=name_list[name];&lt;br /&gt;
	if temp then return temp; end				-- if name is a valid name return its number&lt;br /&gt;
	return 0;									-- misspelled, improper case, or not a proper name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ V A L I D _ M O N T H _ O R _ S E A S O N &amp;gt;------------------------------&lt;br /&gt;
&lt;br /&gt;
--returns true if month or season is valid (properly spelled, capitalized, abbreviated)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_valid_month_or_season (month_season)&lt;br /&gt;
	if 0 == get_month_number (month_season) then		-- if month text isn&#039;t one of the twelve months, might be a season&lt;br /&gt;
		if 0 == get_season_number (month_season) then	-- not a month, is it a season?&lt;br /&gt;
			return false;								-- return false not a month or one of the five seasons&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ V A L I D _ Y E A R &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Function gets current year from the server and compares it to year from a citation parameter.  Years more than one year in the future are not acceptable.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_valid_year(year)&lt;br /&gt;
	if not is_set(year_limit) then&lt;br /&gt;
		year_limit = tonumber(os.date(&amp;quot;%Y&amp;quot;))+1;			-- global variable so we only have to fetch it once&lt;br /&gt;
	end&lt;br /&gt;
	return tonumber(year) &amp;lt;= year_limit;				-- false if year is in the future more than one year&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ V A L I D _ D A T E &amp;gt;----------------------------------------------------&lt;br /&gt;
Returns true if day is less than or equal to the number of days in month and year is no farther into the future&lt;br /&gt;
than next year; else returns false.&lt;br /&gt;
&lt;br /&gt;
Assumes Julian calendar prior to year 1582 and Gregorian calendar thereafter. Accounts for Julian calendar leap&lt;br /&gt;
years before 1582 and Gregorian leap years after 1582. Where the two calendars overlap (1582 to approximately&lt;br /&gt;
1923) dates are assumed to be Gregorian.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_valid_date (year, month, day)&lt;br /&gt;
local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};&lt;br /&gt;
local month_length;&lt;br /&gt;
	if not is_valid_year(year) then												-- no farther into the future than next year&lt;br /&gt;
		return false;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	month = tonumber(month);													-- required for YYYY-MM-DD dates&lt;br /&gt;
	&lt;br /&gt;
	if (2==month) then															-- if February&lt;br /&gt;
		month_length = 28;														-- then 28 days unless&lt;br /&gt;
		if 1582 &amp;gt; tonumber(year) then											-- Julian calendar&lt;br /&gt;
			if 0==(year%4) then&lt;br /&gt;
				month_length = 29;&lt;br /&gt;
			end&lt;br /&gt;
		else																	-- Gregorian calendar&lt;br /&gt;
			if (0==(year%4) and (0~=(year%100) or 0==(year%400))) then			-- is a leap year?&lt;br /&gt;
				month_length = 29;												-- if leap year then 29 days in February&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		month_length=days_in_month[month];&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if tonumber (day) &amp;gt; month_length then&lt;br /&gt;
		return false;&lt;br /&gt;
	end&lt;br /&gt;
	return true;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ V A L I D _ M O N T H _ R A N G E _ S T Y L E &amp;gt;--------------------------&lt;br /&gt;
&lt;br /&gt;
Months in a range are expected to have the same style: Jan–Mar or October–December but not February–Mar or Jul–August. &lt;br /&gt;
There is a special test for May because it can be either short or long form.&lt;br /&gt;
&lt;br /&gt;
Returns true when style for both months is the same&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_valid_month_range_style (month1, month2)&lt;br /&gt;
local len1 = month1:len();&lt;br /&gt;
local len2 = month2:len();&lt;br /&gt;
	if len1 == len2 then&lt;br /&gt;
		return true;															-- both months are short form so return true&lt;br /&gt;
	elseif &#039;May&#039; == month1 or &#039;May&#039;== month2 then&lt;br /&gt;
		return true;															-- both months are long form so return true&lt;br /&gt;
	elseif 3 == len1 or 3 == len2 then&lt;br /&gt;
		return false;															-- months are mixed form so return false&lt;br /&gt;
	else&lt;br /&gt;
		return true;															-- both months are long form so return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ V A L I D _ M O N T H _ S E A S O N _ R A N G E &amp;gt;------------------------&lt;br /&gt;
&lt;br /&gt;
Check a pair of months or seasons to see if both are valid members of a month or season pair.&lt;br /&gt;
&lt;br /&gt;
Month pairs are expected to be left to right, earliest to latest in time.&lt;br /&gt;
&lt;br /&gt;
Similarly, seasons are also left to right, earliest to latest in time.  There is an oddity with seasons: winter is assigned a value of 1, spring 2, ...,&lt;br /&gt;
fall and autumn 4.  Because winter can follow fall/autumn at the end of a calender year, a special test is made to see if |date=Fall-Winter yyyy (4-1) is the date.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_valid_month_season_range(range_start, range_end)&lt;br /&gt;
	local range_start_number = get_month_number (range_start);&lt;br /&gt;
	&lt;br /&gt;
	if 0 == range_start_number then												-- is this a month range?&lt;br /&gt;
		local range_start_number = get_season_number (range_start);				-- not a month; is it a season? get start season number&lt;br /&gt;
		local range_end_number = get_season_number (range_end);					-- get end season number&lt;br /&gt;
&lt;br /&gt;
		if 0 ~= range_start_number then											-- is start of range a season?&lt;br /&gt;
			if range_start_number &amp;lt; range_end_number then						-- range_start is a season&lt;br /&gt;
				return true;													-- return true when range_end is also a season and follows start season; else false&lt;br /&gt;
			end&lt;br /&gt;
			if 24 == range_start_number and 21 == range_end_number then			-- special case when season range is Fall-Winter or Autumn-Winter&lt;br /&gt;
				return true;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return false;		-- range_start is not a month or a season; or range_start is a season and range_end is not; or improper season sequence&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local range_end_number = get_month_number (range_end);						-- get end month number&lt;br /&gt;
	if range_start_number &amp;lt; range_end_number then								-- range_start is a month; does range_start precede range_end?&lt;br /&gt;
		if is_valid_month_range_style (range_start, range_end) then				-- do months have the same style?&lt;br /&gt;
			return true;														-- proper order and same style&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false;																-- range_start month number is greater than or equal to range end number; or range end isn&#039;t a month&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A K E _ C O I N S _ D A T E &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This function receives a table of date parts for one or two dates and an empty table reference declared in&lt;br /&gt;
Module:Citation/CS1.  The function is called only for |date= parameters and only if the |date=&amp;lt;value&amp;gt; is &lt;br /&gt;
determined to be a valid date format.  The question of what to do with invalid date formats is not answered here.&lt;br /&gt;
&lt;br /&gt;
The date parts in the input table are converted to an ISO 8601 conforming date string:&lt;br /&gt;
	single whole dates:		yyyy-mm-dd&lt;br /&gt;
	month and year dates:	yyyy-mm&lt;br /&gt;
	year dates:				yyyy&lt;br /&gt;
	ranges:					yyyy-mm-dd/yyyy-mm-dd&lt;br /&gt;
							yyyy-mm/yyyy-mm&lt;br /&gt;
							yyyy/yyyy&lt;br /&gt;
&lt;br /&gt;
Dates in the Julian calendar are reduced to year or year/year so that we don&#039;t have to do calendar conversion from&lt;br /&gt;
Julian to Proleptic Gregorian.&lt;br /&gt;
&lt;br /&gt;
The input table has:&lt;br /&gt;
	year, year2 – always present; if before 1582, ignore months and days if present&lt;br /&gt;
	month, month2 – 0 if not provided, 1-12 for months, 21-24 for seasons; 31– proper name dates&lt;br /&gt;
	day, day2 –  0 if not provided, 1-31 for days&lt;br /&gt;
	&lt;br /&gt;
the output table receives:&lt;br /&gt;
	rftdate:	an IS8601 formatted date&lt;br /&gt;
	rftchron:	a free-form version of the date, usually without year which is in rftdate (season ranges and propername dates)&lt;br /&gt;
	rftssn:		one of four season keywords: winter, spring, summer, fall (lowercase)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function make_COinS_date (input, tCOinS_date)&lt;br /&gt;
	local date;																	-- one date or first date in a range&lt;br /&gt;
	local date2 = &#039;&#039;;															-- end of range date&lt;br /&gt;
	&lt;br /&gt;
	if 1582 &amp;gt; tonumber(input.year) or 20 &amp;lt; tonumber(input.month) then			-- Julian calendar or season so &amp;amp;rft.date gets year only&lt;br /&gt;
		date = input.year;&lt;br /&gt;
		if 0 ~= input.year2 and input.year ~= input.year2 then					-- if a range, only the second year portion when not the same as range start year&lt;br /&gt;
			date = string.format (&#039;%.4d/%.4d&#039;, tonumber(input.year), tonumber(input.year2))		-- assemble the date range&lt;br /&gt;
		end&lt;br /&gt;
		if 20 &amp;lt; tonumber(input.month) then										-- if season or propername date&lt;br /&gt;
			local season = {[21]=&#039;winter&#039;, [22]=&#039;spring&#039;, [23]=&#039;summer&#039;, [24]=&#039;fall&#039;, [31]=&#039;Christmas&#039;};	-- seasons lowercase, no autumn; proper names use title case&lt;br /&gt;
			if 0 == input.month2 then											-- single season date&lt;br /&gt;
				if 30 &amp;lt;tonumber(input.month) then&lt;br /&gt;
					tCOinS_date.rftchron = season[input.month];					-- proper name dates&lt;br /&gt;
				else&lt;br /&gt;
					tCOinS_date.rftssn = season[input.month];					-- seasons&lt;br /&gt;
				end&lt;br /&gt;
			else																-- season range with a second season specified&lt;br /&gt;
				if input.year ~= input.year2 then								-- season year – season year range or season year–year&lt;br /&gt;
					tCOinS_date.rftssn = season[input.month];					-- start of range season; keep this?&lt;br /&gt;
					if 0~= month2 then&lt;br /&gt;
						tCOinS_date.rftchron = string.format (&#039;%s %s – %s %s&#039;, season[input.month], input.year, season[input.month2], input.year2);&lt;br /&gt;
					end&lt;br /&gt;
				else															-- season–season year range&lt;br /&gt;
					tCOinS_date.rftssn = season[input.month];					-- start of range season; keep this?&lt;br /&gt;
					tCOinS_date.rftchron = season[input.month] .. &#039;–&#039; .. season[input.month2];	-- season–season year range&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		tCOinS_date.rftdate = date;&lt;br /&gt;
		return;																	-- done&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if 0 ~= input.day then&lt;br /&gt;
		date = string.format (&#039;%s-%.2d-%.2d&#039;, input.year, tonumber(input.month), tonumber(input.day));	-- whole date&lt;br /&gt;
	elseif 0 ~= input.month then&lt;br /&gt;
		date = string.format (&#039;%s-%.2d&#039;, input.year, tonumber(input.month));	-- year and month&lt;br /&gt;
	else&lt;br /&gt;
		date = string.format (&#039;%s&#039;, input.year);								-- just year&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if 0 ~= input.year2 then&lt;br /&gt;
		if 0 ~= input.day2 then&lt;br /&gt;
			date2 = string.format (&#039;/%s-%.2d-%.2d&#039;, input.year2, tonumber(input.month2), tonumber(input.day2));		-- whole date&lt;br /&gt;
		elseif 0 ~= input.month2 then&lt;br /&gt;
			date2 = string.format (&#039;/%s-%.2d&#039;, input.year2, tonumber(input.month2));	-- year and month&lt;br /&gt;
		else&lt;br /&gt;
			date2 = string.format (&#039;/%s&#039;, input.year2);							-- just year&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	tCOinS_date.rftdate = date .. date2;										-- date2 has the &#039;/&#039; separator&lt;br /&gt;
	return;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C H E C K _ D A T E &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Check date format to see that it is one of the formats approved by WP:DATESNO or WP:DATERANGE. Exception: only&lt;br /&gt;
allowed range separator is endash.  Additionally, check the date to see that it is a real date: no 31 in 30-day&lt;br /&gt;
months; no 29 February when not a leap year.  Months, both long-form and three character abbreviations, and seasons&lt;br /&gt;
must be spelled correctly.  Future years beyond next year are not allowed.&lt;br /&gt;
&lt;br /&gt;
If the date fails the format tests, this function returns false and does not return values for anchor_year and&lt;br /&gt;
COinS_date.  When this happens, the date parameter is used in the COinS metadata and the CITEREF identifier gets&lt;br /&gt;
its year from the year parameter if present otherwise CITEREF does not get a date value.&lt;br /&gt;
&lt;br /&gt;
Inputs:&lt;br /&gt;
	date_string - date string from date-holding parameters (date, year, accessdate, embargo, archivedate, etc.)&lt;br /&gt;
&lt;br /&gt;
Returns:&lt;br /&gt;
	false if date string is not a real date; else&lt;br /&gt;
	true, anchor_year, COinS_date&lt;br /&gt;
		anchor_year can be used in CITEREF anchors&lt;br /&gt;
		COinS_date is ISO 8601 format date; see make_COInS_date()&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function check_date (date_string, tCOinS_date)&lt;br /&gt;
	local year;			-- assume that year2, months, and days are not used;&lt;br /&gt;
	local year2=0;		-- second year in a year range&lt;br /&gt;
	local month=0;&lt;br /&gt;
	local month2=0;		-- second month in a month range&lt;br /&gt;
	local day=0;&lt;br /&gt;
	local day2=0;		-- second day in a day range&lt;br /&gt;
	local anchor_year;&lt;br /&gt;
	local coins_date;&lt;br /&gt;
&lt;br /&gt;
	if date_string:match(&amp;quot;^%d%d%d%d%-%d%d%-%d%d$&amp;quot;) then										-- year-initial numerical year month day format&lt;br /&gt;
		year, month, day=string.match(date_string, &amp;quot;(%d%d%d%d)%-(%d%d)%-(%d%d)&amp;quot;);&lt;br /&gt;
		if 12 &amp;lt; tonumber(month) or 1 &amp;gt; tonumber(month) or 1583 &amp;gt; tonumber(year) then return false; end			-- month number not valid or not Gregorian calendar&lt;br /&gt;
		anchor_year = year;&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^%a+ +[1-9]%d?, +[1-9]%d%d%d%a?$&amp;quot;) then						-- month-initial: month day, year&lt;br /&gt;
		month, day, anchor_year, year=string.match(date_string, &amp;quot;(%a+)%s*(%d%d?),%s*((%d%d%d%d)%a?)&amp;quot;);&lt;br /&gt;
		month = get_month_number (month);&lt;br /&gt;
		if 0 == month then return false; end												-- return false if month text isn&#039;t one of the twelve months&lt;br /&gt;
				&lt;br /&gt;
	elseif date_string:match(&amp;quot;^%a+ +[1-9]%d?–[1-9]%d?, +[1-9]%d%d%d%a?$&amp;quot;) then				-- month-initial day range: month day–day, year; days are separated by endash&lt;br /&gt;
		month, day, day2, anchor_year, year=string.match(date_string, &amp;quot;(%a+) +(%d%d?)–(%d%d?), +((%d%d%d%d)%a?)&amp;quot;);&lt;br /&gt;
		if tonumber(day) &amp;gt;= tonumber(day2) then return false; end							-- date range order is left to right: earlier to later; dates may not be the same;&lt;br /&gt;
		month = get_month_number (month);&lt;br /&gt;
		if 0 == month then return false; end												-- return false if month text isn&#039;t one of the twelve months&lt;br /&gt;
		month2=month;																		-- for metadata&lt;br /&gt;
		year2=year;&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^[1-9]%d? +%a+ +[1-9]%d%d%d%a?$&amp;quot;) then						-- day-initial: day month year&lt;br /&gt;
		day, month, anchor_year, year=string.match(date_string, &amp;quot;(%d%d*)%s*(%a+)%s*((%d%d%d%d)%a?)&amp;quot;);&lt;br /&gt;
		month = get_month_number (month);&lt;br /&gt;
		if 0 == month then return false; end												-- return false if month text isn&#039;t one of the twelve months&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^[1-9]%d?–[1-9]%d? +%a+ +[1-9]%d%d%d%a?$&amp;quot;) then				-- day-range-initial: day–day month year; days are separated by endash&lt;br /&gt;
		day, day2, month, anchor_year, year=string.match(date_string, &amp;quot;(%d%d?)–(%d%d?) +(%a+) +((%d%d%d%d)%a?)&amp;quot;);&lt;br /&gt;
		if tonumber(day) &amp;gt;= tonumber(day2) then return false; end							-- date range order is left to right: earlier to later; dates may not be the same;&lt;br /&gt;
		month = get_month_number (month);&lt;br /&gt;
		if 0 == month then return false; end												-- return false if month text isn&#039;t one of the twelve months&lt;br /&gt;
		month2=month;																		-- for metadata&lt;br /&gt;
		year2=year;&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^[1-9]%d? +%a+ – [1-9]%d? +%a+ +[1-9]%d%d%d%a?$&amp;quot;) then		-- day initial month-day-range: day month - day month year; uses spaced endash&lt;br /&gt;
		day, month, day2, month2, anchor_year, year=date_string:match(&amp;quot;(%d%d?) +(%a+) – (%d%d?) +(%a+) +((%d%d%d%d)%a?)&amp;quot;);&lt;br /&gt;
		if (not is_valid_month_season_range(month, month2)) or not is_valid_year(year) then return false; end	-- date range order is left to right: earlier to later;&lt;br /&gt;
		month = get_month_number (month);													-- for metadata&lt;br /&gt;
		month2 = get_month_number (month2);&lt;br /&gt;
		year2=year;&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^%a+ +[1-9]%d? – %a+ +[1-9]%d?, +[1-9]%d%d%d?%a?$&amp;quot;) then		-- month initial month-day-range: month day – month day, year;  uses spaced endash&lt;br /&gt;
		month, day, month2, day2, anchor_year, year=date_string:match(&amp;quot;(%a+) +(%d%d?) – (%a+) +(%d%d?), +((%d%d%d%d)%a?)&amp;quot;);&lt;br /&gt;
		if (not is_valid_month_season_range(month, month2)) or not is_valid_year(year) then return false; end&lt;br /&gt;
		month = get_month_number (month);													-- for metadata&lt;br /&gt;
		month2 = get_month_number (month2);&lt;br /&gt;
		year2=year;&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^[1-9]%d? +%a+ +[1-9]%d%d%d – [1-9]%d? +%a+ +[1-9]%d%d%d%a?$&amp;quot;) then		-- day initial month-day-year-range: day month year - day month year; uses spaced endash&lt;br /&gt;
		day, month, year, day2, month2, anchor_year, year2=date_string:match(&amp;quot;(%d%d?) +(%a+) +(%d%d%d%d?) – (%d%d?) +(%a+) +((%d%d%d%d?)%a?)&amp;quot;);&lt;br /&gt;
		if tonumber(year2) &amp;lt;= tonumber(year) then return false; end												-- must be sequential years, left to right, earlier to later&lt;br /&gt;
		if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end		-- year2 no more than one year in the future; months same style&lt;br /&gt;
		month = get_month_number (month);																		-- for metadata&lt;br /&gt;
		month2 = get_month_number (month2);&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^%a+ +[1-9]%d?, +[1-9]%d%d%d – %a+ +[1-9]%d?, +[1-9]%d%d%d%a?$&amp;quot;) then		-- month initial month-day-year-range: month day, year – month day, year;  uses spaced endash&lt;br /&gt;
		month, day, year, month2, day2, anchor_year, year2=date_string:match(&amp;quot;(%a+) +(%d%d?), +(%d%d%d%d) – (%a+) +(%d%d?), +((%d%d%d%d)%a?)&amp;quot;);&lt;br /&gt;
		if tonumber(year2) &amp;lt;= tonumber(year) then return false; end												-- must be sequential years, left to right, earlier to later&lt;br /&gt;
		if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end		-- year2 no more than one year in the future; months same style&lt;br /&gt;
		month = get_month_number (month);																		-- for metadata&lt;br /&gt;
		month2 = get_month_number (month2);&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^%a+ +[1-9]%d%d%d–%d%d%a?$&amp;quot;) then								-- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash&lt;br /&gt;
		local century;&lt;br /&gt;
		month, year, century, anchor_year, year2=date_string:match(&amp;quot;(%a+) +((%d%d)%d%d)–((%d%d)%a?)&amp;quot;);&lt;br /&gt;
		if &#039;Winter&#039; ~= month and &#039;Summer&#039; ~= month then return false end;					-- &#039;month&#039; can only be Winter or Summer&lt;br /&gt;
		anchor_year=year..&#039;–&#039;..anchor_year;													-- assemble anchor_year from both years&lt;br /&gt;
		year2 = century..year2;																-- add the century to year2 for comparisons&lt;br /&gt;
		if 1 ~= tonumber(year2) - tonumber(year) then return false; end						-- must be sequential years, left to right, earlier to later&lt;br /&gt;
		if not is_valid_year(year2) then return false; end									-- no year farther in the future than next year&lt;br /&gt;
		month = get_season_number (month);&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^%a+ +[1-9]%d%d%d–[1-9]%d%d%d%a?$&amp;quot;) then						-- special case Winter/Summer year-year; year separated with unspaced endash&lt;br /&gt;
		month, year, anchor_year, year2=date_string:match(&amp;quot;(%a+) +(%d%d%d%d)–((%d%d%d%d)%a?)&amp;quot;);&lt;br /&gt;
		if &#039;Winter&#039; ~= month and &#039;Summer&#039; ~= month then return false end;					-- &#039;month&#039; can only be Winter or Summer&lt;br /&gt;
		anchor_year=year..&#039;–&#039;..anchor_year;													-- assemble anchor_year from both years&lt;br /&gt;
		if 1 ~= tonumber(year2) - tonumber(year) then return false; end						-- must be sequential years, left to right, earlier to later&lt;br /&gt;
		if not is_valid_year(year2) then return false; end									-- no year farther in the future than next year&lt;br /&gt;
		month = get_season_number (month);													-- for metadata&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^%a+ +[1-9]%d%d%d% – %a+ +[1-9]%d%d%d%a?$&amp;quot;) then				-- month/season year - month/season year; separated by spaced endash&lt;br /&gt;
		month, year, month2, anchor_year, year2=date_string:match(&amp;quot;(%a+) +(%d%d%d%d) – (%a+) +((%d%d%d%d)%a?)&amp;quot;);&lt;br /&gt;
		anchor_year=year..&#039;–&#039;..anchor_year;													-- assemble anchor_year from both years&lt;br /&gt;
		if tonumber(year) &amp;gt;= tonumber(year2) then return false; end							-- left to right, earlier to later, not the same&lt;br /&gt;
		if not is_valid_year(year2) then return false; end									-- no year farther in the future than next year&lt;br /&gt;
		if 0 ~= get_month_number(month) and 0 ~= get_month_number(month2) and is_valid_month_range_style(month, month2) then 	-- both must be month year, same month style&lt;br /&gt;
			month = get_month_number(month);&lt;br /&gt;
			month2 = get_month_number(month2);&lt;br /&gt;
		elseif 0 ~= get_season_number(month) and 0 ~= get_season_number(month2) then		-- both must be or season year, not mixed&lt;br /&gt;
			month = get_season_number(month);&lt;br /&gt;
			month2 = get_season_number(month2);&lt;br /&gt;
		else&lt;br /&gt;
			 return false;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match (&amp;quot;^%a+–%a+ +[1-9]%d%d%d%a?$&amp;quot;) then					-- month/season range year; months separated by endash &lt;br /&gt;
		month, month2, anchor_year, year=date_string:match (&amp;quot;(%a+)–(%a+)%s*((%d%d%d%d)%a?)&amp;quot;);&lt;br /&gt;
		if (not is_valid_month_season_range(month, month2)) or (not is_valid_year(year)) then return false; end&lt;br /&gt;
		if 0 ~= get_month_number(month) then									-- determined to be a valid range so just check this one to know if month or season&lt;br /&gt;
			month = get_month_number(month);&lt;br /&gt;
			month2 = get_month_number(month2);&lt;br /&gt;
		else&lt;br /&gt;
			month = get_season_number(month);&lt;br /&gt;
			month2 = get_season_number(month2);&lt;br /&gt;
		end&lt;br /&gt;
		year2=year;&lt;br /&gt;
		&lt;br /&gt;
	elseif date_string:match(&amp;quot;^%a+ +%d%d%d%d%a?$&amp;quot;) then							-- month/season year or proper-name year&lt;br /&gt;
		month, anchor_year, year=date_string:match(&amp;quot;(%a+)%s*((%d%d%d%d)%a?)&amp;quot;);&lt;br /&gt;
		if not is_valid_year(year) then return false; end&lt;br /&gt;
		if not is_valid_month_or_season (month) and 0 == is_proper_name (month) then return false; end&lt;br /&gt;
		if 0 ~= get_month_number(month) then									-- determined to be a valid range so just check this one to know if month or season&lt;br /&gt;
			month = get_month_number(month);&lt;br /&gt;
		elseif 0 ~= get_season_number(month) then&lt;br /&gt;
			month = get_season_number(month);&lt;br /&gt;
		else&lt;br /&gt;
			month = is_proper_name (month);										-- must be proper name; not supported in COinS&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^[1-9]%d%d%d?–[1-9]%d%d%d?%a?$&amp;quot;) then				-- Year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999&lt;br /&gt;
		year, anchor_year, year2=date_string:match(&amp;quot;(%d%d%d%d?)–((%d%d%d%d?)%a?)&amp;quot;);&lt;br /&gt;
		anchor_year=year..&#039;–&#039;..anchor_year;										-- assemble anchor year from both years&lt;br /&gt;
		if tonumber(year) &amp;gt;= tonumber(year2) then return false; end				-- left to right, earlier to later, not the same&lt;br /&gt;
		if not is_valid_year(year2) then return false; end						-- no year farther in the future than next year&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^[1-9]%d%d%d–%d%d%a?$&amp;quot;) then						-- Year range: YYYY–YY; separated by unspaced endash&lt;br /&gt;
		local century;&lt;br /&gt;
		year, century, anchor_year, year2=date_string:match(&amp;quot;((%d%d)%d%d)–((%d%d)%a?)&amp;quot;);&lt;br /&gt;
		anchor_year=year..&#039;–&#039;..anchor_year;										-- assemble anchor year from both years&lt;br /&gt;
		if 13 &amp;gt; tonumber(year2) then return false; end							-- don&#039;t allow 2003-05 which might be May 2003&lt;br /&gt;
		year2 = century..year2;													-- add the century to year2 for comparisons&lt;br /&gt;
		if tonumber(year) &amp;gt;= tonumber(year2) then return false; end				-- left to right, earlier to later, not the same&lt;br /&gt;
		if not is_valid_year(year2) then return false; end						-- no year farther in the future than next year&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^[1-9]%d%d%d?%a?$&amp;quot;) then							-- year; here accept either YYY or YYYY&lt;br /&gt;
		anchor_year, year=date_string:match(&amp;quot;((%d%d%d%d?)%a?)&amp;quot;);&lt;br /&gt;
		if false == is_valid_year(year) then&lt;br /&gt;
			return false;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	-- LOCAL: do not use mw.ustring: it allows full-width characters for %d.&lt;br /&gt;
	elseif date_string:match(&amp;quot;^[1-9]%d%d%d年[1-9]%d?月[1-9]%d?日$&amp;quot;) then						-- zh: year month day&lt;br /&gt;
		year, month, day=date_string:match(&amp;quot;(%d%d%d%d)年(%d%d*月)(%d%d*)日&amp;quot;);&lt;br /&gt;
		month = get_month_number (month);&lt;br /&gt;
		if 0 == month then return false; end&lt;br /&gt;
		anchor_year = year;&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^[1-9]%d%d%d年[1-9]%d?月$&amp;quot;) then							-- zh: year month&lt;br /&gt;
		year, month=date_string:match(&amp;quot;(%d%d%d%d)年(%d%d*月)&amp;quot;);&lt;br /&gt;
		month = get_month_number (month);&lt;br /&gt;
		if 0 == month then return false; end&lt;br /&gt;
		anchor_year = year;&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^[1-9]%d%d%d?年$&amp;quot;) then							-- zh: year; here accept either YYY or YYYY&lt;br /&gt;
		year=date_string:match(&amp;quot;(%d%d%d%d?)年&amp;quot;);&lt;br /&gt;
		if false == is_valid_year(year) then&lt;br /&gt;
			return false;&lt;br /&gt;
		end&lt;br /&gt;
		anchor_year = year;&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match(&amp;quot;^%d%d%d%d%-%d%d$&amp;quot;) then							-- numerical year month format&lt;br /&gt;
		year, month=date_string:match(&amp;quot;(%d%d%d%d)%-(%d%d)&amp;quot;);&lt;br /&gt;
		month=tonumber(month);&lt;br /&gt;
		if 12 &amp;lt; month or 1 &amp;gt; month or 1583 &amp;gt; tonumber(year) then return false; end			-- month number not valid or not Gregorian calendar&lt;br /&gt;
		anchor_year = year;&lt;br /&gt;
	-- END LOCAL&lt;br /&gt;
&lt;br /&gt;
	else&lt;br /&gt;
		return false;															-- date format not one of the MOS:DATE approved formats&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result=true;															-- check whole dates for validity; assume true because not all dates will go through this test&lt;br /&gt;
	if 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 == day2 then		-- YMD (simple whole date)&lt;br /&gt;
		result=is_valid_date(year,month,day);&lt;br /&gt;
&lt;br /&gt;
	elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 ~= day2 then	-- YMD-d (day range)&lt;br /&gt;
		result=is_valid_date(year,month,day);&lt;br /&gt;
		result=result and is_valid_date(year,month,day2);&lt;br /&gt;
&lt;br /&gt;
	elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 ~= month2 and 0 ~= day2 then	-- YMD-md (day month range)&lt;br /&gt;
		result=is_valid_date(year,month,day);&lt;br /&gt;
		result=result and is_valid_date(year,month2,day2);&lt;br /&gt;
&lt;br /&gt;
	elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 ~= year2 and 0 ~= month2 and 0 ~= day2 then	-- YMD-ymd (day month year range)&lt;br /&gt;
		result=is_valid_date(year,month,day);&lt;br /&gt;
		result=result and is_valid_date(year2,month2,day2);&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if false == result then return false; end&lt;br /&gt;
&lt;br /&gt;
	if nil ~= tCOinS_date then													-- this table only passed into this function when testing |date= parameter values&lt;br /&gt;
		make_COinS_date ({year=year, month=month, day=day, year2=year2, month2=month2, day2=day2}, tCOinS_date);	-- make an ISO 8601 date string for COinS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return true, anchor_year;													-- format is good and date string represents a real date&lt;br /&gt;
end	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; D A T E S &amp;gt;--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Cycle the date-holding parameters in passed table date_parameters_list through check_date() to check compliance with MOS:DATE. For all valid dates, check_date() returns&lt;br /&gt;
true. The |date= parameter test is unique, it is the only date holding parameter from which values for anchor_year (used in CITEREF identifiers) and COinS_date (used in&lt;br /&gt;
the COinS metadata) are derived.  The |date= parameter is the only date-holding parameter that is allowed to contain the no-date keywords &amp;quot;n.d.&amp;quot; or &amp;quot;nd&amp;quot; (without quotes).&lt;br /&gt;
&lt;br /&gt;
Unlike most error messages created in this module, only one error message is created by this function. Because all of the date holding parameters are processed serially,&lt;br /&gt;
a single error message is created as the dates are tested.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function dates(date_parameters_list, tCOinS_date)&lt;br /&gt;
	local anchor_year;		-- will return as nil if the date being tested is not |date=&lt;br /&gt;
	local COinS_date;		-- will return as nil if the date being tested is not |date=&lt;br /&gt;
	local error_message = &amp;quot;&amp;quot;;&lt;br /&gt;
	local good_date = false;&lt;br /&gt;
	&lt;br /&gt;
	for k, v in pairs(date_parameters_list) do									-- for each date-holding parameter in the list&lt;br /&gt;
		if is_set(v) then														-- if the parameter has a value&lt;br /&gt;
			if v:match(&amp;quot;^c%. [1-9]%d%d%d?%a?$&amp;quot;) then							-- special case for c. year or with or without CITEREF disambiguator - only |date= and |year=&lt;br /&gt;
				local year = v:match(&amp;quot;c%. ([1-9]%d%d%d?)%a?&amp;quot;);					-- get the year portion so it can be tested&lt;br /&gt;
				if &#039;date&#039;==k then&lt;br /&gt;
					anchor_year, COinS_date = v:match(&amp;quot;((c%. [1-9]%d%d%d?)%a?)&amp;quot;);	-- anchor year and COinS_date only from |date= parameter&lt;br /&gt;
					good_date = is_valid_year(year);&lt;br /&gt;
				elseif &#039;year&#039;==k then&lt;br /&gt;
					good_date = is_valid_year(year);&lt;br /&gt;
				end&lt;br /&gt;
			elseif &#039;date&#039;==k then												-- if the parameter is |date=&lt;br /&gt;
				if v:match(&amp;quot;^n%.d%.%a?&amp;quot;) then									-- if |date=n.d. with or without a CITEREF disambiguator&lt;br /&gt;
					good_date, anchor_year, COinS_date = true, v:match(&amp;quot;((n%.d%.)%a?)&amp;quot;);	--&amp;quot;n.d.&amp;quot;; no error when date parameter is set to no date&lt;br /&gt;
				elseif v:match(&amp;quot;^nd%a?$&amp;quot;) then									-- if |date=nd with or without a CITEREF disambiguator&lt;br /&gt;
					good_date, anchor_year, COinS_date = true, v:match(&amp;quot;((nd)%a?)&amp;quot;);	--&amp;quot;nd&amp;quot;;	no error when date parameter is set to no date&lt;br /&gt;
				else&lt;br /&gt;
					good_date, anchor_year, COinS_date = check_date (v, tCOinS_date);	-- go test the date&lt;br /&gt;
				end&lt;br /&gt;
			elseif &#039;access-date&#039;==k then										-- if the parameter is |date=&lt;br /&gt;
				good_date = check_date (v);										-- go test the date&lt;br /&gt;
				if true == good_date then										-- if the date is a valid date&lt;br /&gt;
					good_date = is_valid_accessdate (v);						-- is Wikipedia start date &amp;lt; accessdate &amp;lt; tomorrow&#039;s date?&lt;br /&gt;
				end&lt;br /&gt;
			else																-- any other date-holding parameter&lt;br /&gt;
				good_date = check_date (v);										-- go test the date&lt;br /&gt;
			end&lt;br /&gt;
			if false==good_date then											-- assemble one error message so we don&#039;t add the tracking category multiple times&lt;br /&gt;
				if is_set(error_message) then									-- once we&#039;ve added the first portion of the error message ...&lt;br /&gt;
					error_message=error_message .. &amp;quot;, &amp;quot;;						-- ... add a comma space separator&lt;br /&gt;
				end&lt;br /&gt;
				error_message=error_message .. &amp;quot;&amp;amp;#124;&amp;quot; .. k .. &amp;quot;=&amp;quot;;			-- add the failed parameter&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return anchor_year, error_message;											-- and done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; Y E A R _ D A T E _ C H E C K &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Compare the value provided in |year= with the year value(s) provided in |date=.  This function returns a numeric value:&lt;br /&gt;
	0 - year value does not match the year value in date&lt;br /&gt;
	1 - (default) year value matches the year value in date or one of the year values when date contains two years&lt;br /&gt;
	2 - year value matches the year value in date when date is in the form YYYY-MM-DD and year is disambiguated (|year=YYYYx)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function year_date_check (year_string, date_string)&lt;br /&gt;
	local year;&lt;br /&gt;
	local date1;&lt;br /&gt;
	local date2;&lt;br /&gt;
	local result = 1;															-- result of the test; assume that the test passes&lt;br /&gt;
	&lt;br /&gt;
	year = year_string:match (&#039;(%d%d%d%d?)&#039;);&lt;br /&gt;
&lt;br /&gt;
	if date_string:match (&#039;%d%d%d%d%-%d%d%-%d%d&#039;) and year_string:match (&#039;%d%d%d%d%a&#039;) then	--special case where date and year required YYYY-MM-DD and YYYYx&lt;br /&gt;
		date1 = date_string:match (&#039;(%d%d%d%d)&#039;);&lt;br /&gt;
		year = year_string:match (&#039;(%d%d%d%d)&#039;);&lt;br /&gt;
		if year ~= date1 then&lt;br /&gt;
			result = 0;															-- years don&#039;t match&lt;br /&gt;
		else&lt;br /&gt;
			result = 2;															-- years match; but because disambiguated, don&#039;t add to maint cat&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
	elseif date_string:match (&amp;quot;%d%d%d%d?.-%d%d%d%d?&amp;quot;) then						-- any of the standard formats of date with two three- or four-digit years&lt;br /&gt;
		date1, date2 = date_string:match (&amp;quot;(%d%d%d%d?).-(%d%d%d%d?)&amp;quot;);&lt;br /&gt;
		if year ~= date1 and year ~= date2 then&lt;br /&gt;
			result = 0;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match (&amp;quot;%d%d%d%d[%s%-–]+%d%d&amp;quot;) then						-- YYYY-YY date ranges&lt;br /&gt;
		local century;&lt;br /&gt;
		date1, century, date2 = date_string:match (&amp;quot;((%d%d)%d%d)[%s%-–]+(%d%d)&amp;quot;);&lt;br /&gt;
		date2 = century..date2;													-- convert YY to YYYY&lt;br /&gt;
		if year ~= date1 and year ~= date2 then&lt;br /&gt;
			result = 0;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif date_string:match (&amp;quot;%d%d%d%d?&amp;quot;) then									-- any of the standard formats of date with one year&lt;br /&gt;
		date1 = date_string:match (&amp;quot;(%d%d%d%d?)&amp;quot;);&lt;br /&gt;
		if year ~= date1 then&lt;br /&gt;
			result = 0;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return result;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return {dates = dates, year_date_check = year_date_check}						-- return exported functions&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Module:Citation/CS1/Configuration&amp;diff=7452</id>
		<title>Module:Citation/CS1/Configuration</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Module:Citation/CS1/Configuration&amp;diff=7452"/>
		<updated>2016-06-10T12:07:19Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​导入1个版本：Template:Cite web&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local citation_config = {};&lt;br /&gt;
&lt;br /&gt;
-- override &amp;lt;code&amp;gt;...&amp;lt;/code&amp;gt; styling to remove color, border, and padding.  &amp;lt;code&amp;gt; css is specified here:&lt;br /&gt;
-- https://git.wikimedia.org/blob/mediawiki%2Fcore.git/69cd73811f7aadd093050dbf20ed70ef0b42a713/skins%2Fcommon%2FcommonElements.css#L199&lt;br /&gt;
local code_style=&amp;quot;color:inherit; border:inherit; padding:inherit;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; U N C A T E G O R I Z E D _ N A M E S P A C E S &amp;gt;------------------------------&lt;br /&gt;
&lt;br /&gt;
List of namespaces that should not be included in citation error categories.  Same as setting notracking = true by default&lt;br /&gt;
&lt;br /&gt;
Note: Namespace names should use underscores instead of spaces.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
local uncategorized_namespaces = { &#039;User&#039;, &#039;Talk&#039;, &#039;User_talk&#039;, &#039;Wikipedia_talk&#039;, &#039;File_talk&#039;, &#039;Template_talk&#039;,&lt;br /&gt;
	&#039;Help_talk&#039;, &#039;Category_talk&#039;, &#039;Portal_talk&#039;, &#039;Book_talk&#039;, &#039;Draft&#039;, &#039;Draft_talk&#039;, &#039;Education_Program_talk&#039;, &lt;br /&gt;
	&#039;Module_talk&#039;, &#039;MediaWiki_talk&#039; };&lt;br /&gt;
&lt;br /&gt;
local uncategorized_subpages = {&#039;/[Ss]andbox&#039;, &#039;/[Tt]estcases&#039;};		-- list of Lua patterns found in page names of pages we should not categorize&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M E S S A G E S &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Translation table&lt;br /&gt;
&lt;br /&gt;
The following contains fixed text that may be output as part of a citation.&lt;br /&gt;
This is separated from the main body to aid in future translations of this&lt;br /&gt;
module.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local messages = {&lt;br /&gt;
	[&#039;archived-dead&#039;] = &#039;（$1存档于$2）&#039;,&lt;br /&gt;
	[&#039;archived-not-dead&#039;] = &#039;（原始内容$1于$2）&#039;,&lt;br /&gt;
	[&#039;archived-missing&#039;] = &#039;（原始内容$1存档于$2）&#039;,&lt;br /&gt;
	[&#039;archived&#039;] = &#039;存档&#039;,&lt;br /&gt;
	[&#039;by&#039;] = &#039;By&#039;,																-- contributions to authored works: introduction, foreword, afterword&lt;br /&gt;
	[&#039;cartography&#039;] = &#039;Cartography by $1&#039;,&lt;br /&gt;
	[&#039;editor&#039;] = &#039;编&#039;,&lt;br /&gt;
	[&#039;editors&#039;] = &#039;编&#039;, &lt;br /&gt;
	[&#039;edition&#039;] = &#039;$1&#039;, &lt;br /&gt;
	[&#039;episode&#039;] = &#039;第$1集&#039;,&lt;br /&gt;
	[&#039;et al&#039;] = &#039;等&#039;, &lt;br /&gt;
	[&#039;in&#039;] = &#039;(编)&#039;,																-- edited works&lt;br /&gt;
	[&#039;inactive&#039;] = &#039;不活跃&#039;,&lt;br /&gt;
	[&#039;inset&#039;] = &#039;$1 inset&#039;,&lt;br /&gt;
	[&#039;lay summary&#039;] = &#039;Lay summary&#039;,&lt;br /&gt;
	[&#039;newsgroup&#039;] = &#039;[[Usenet newsgroup|Newsgroup]]:&amp;amp;nbsp;$1&#039;,&lt;br /&gt;
	[&#039;original&#039;] = &#039;原始内容&#039;,&lt;br /&gt;
	[&#039;published&#039;] = &#039;$1&#039;,&lt;br /&gt;
	[&#039;retrieved&#039;] = &#039;&amp;amp;#91;$1&amp;amp;#93;&#039;,&lt;br /&gt;
	[&#039;season&#039;] = &#039;第$1节&#039;, &lt;br /&gt;
	[&#039;section&#039;] = &#039;§ $1&#039;,&lt;br /&gt;
	[&#039;sections&#039;] = &#039;§§ $1&#039;,&lt;br /&gt;
	[&#039;series&#039;] = &#039;第$1系列&#039;,&lt;br /&gt;
	[&#039;type&#039;] = &#039; ($1)&#039;,															-- for titletype&lt;br /&gt;
	[&#039;written&#039;] = &#039;写于$1&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;vol&#039;] = &#039;$1 Vol.&amp;amp;nbsp;$2&#039;,												-- $1 is sepc; bold journal style volume is in presentation{}&lt;br /&gt;
	[&#039;vol-no&#039;] = &#039;$1 Vol.&amp;amp;nbsp;$2 no.&amp;amp;nbsp;$3&#039;,									-- sepc, volume, issue&lt;br /&gt;
	[&#039;issue&#039;] = &#039;$1 No.&amp;amp;nbsp;$2&#039;,												-- $1 is sepc&lt;br /&gt;
&lt;br /&gt;
	[&#039;j-vol&#039;] = &#039;$1 $2&#039;,														-- sepc, volume; bold journal volume is in presentation{}&lt;br /&gt;
	[&#039;j-issue&#039;] = &#039; ($1)&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;nopp&#039;] = &#039;$1 $2&#039;;															-- page(s) without prefix; $1 is sepc&lt;br /&gt;
&lt;br /&gt;
	[&#039;p-prefix&#039;] = &amp;quot;: $2&amp;quot;,												-- $1 is sepc&lt;br /&gt;
	[&#039;pp-prefix&#039;] = &amp;quot;: $2&amp;quot;,											-- $1 is sepc&lt;br /&gt;
	[&#039;j-page(s)&#039;] = &#039;: $1&#039;,														-- same for page and pages&lt;br /&gt;
&lt;br /&gt;
	[&#039;sheet&#039;] = &#039;$1 Sheet&amp;amp;nbsp;$2&#039;,												-- $1 is sepc&lt;br /&gt;
	[&#039;sheets&#039;] = &#039;$1 Sheets&amp;amp;nbsp;$2&#039;,											-- $1 is sepc&lt;br /&gt;
	[&#039;j-sheet&#039;] = &#039;: Sheet&amp;amp;nbsp;$1&#039;,&lt;br /&gt;
	[&#039;j-sheets&#039;] = &#039;: Sheets&amp;amp;nbsp;$1&#039;,&lt;br /&gt;
	&lt;br /&gt;
	[&#039;subscription&#039;] = &#039;&amp;lt;span style=&amp;quot;font-size:0.95em; font-size:90%; color:#555&amp;quot;&amp;gt;（需要订阅（&amp;lt;span title=&amp;quot;來源無須可供在線查閱。在線來源無須可供免費取得。該網站或須付費訂閱。&amp;quot; style=&amp;quot;border-bottom:1px dotted;cursor:help&amp;quot;&amp;gt;說明&amp;lt;/span&amp;gt;））&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
		&#039;[[Category:含有連結內容需訂閱查看的頁面]]&#039;, &lt;br /&gt;
	&lt;br /&gt;
	[&#039;registration&#039;]=&#039;&amp;lt;span style=&amp;quot;font-size:0.95em; font-size:90%; color:#555&amp;quot;&amp;gt;(需要註冊 (&amp;lt;span title=&amp;quot;來源無須可供在線查閱。在線來源無須可供免費取得。該網站或須註冊。&amp;quot; style=&amp;quot;border-bottom:1px dotted;cursor:help&amp;quot;&amp;gt;說明&amp;lt;/span&amp;gt;))&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
		&#039;[[Category:含有內容需登入查看的頁面]]&#039;,&lt;br /&gt;
	&lt;br /&gt;
	[&#039;language&#039;] = &#039;&amp;lt;span style=&amp;quot;font-family: sans-serif; cursor: default; color:#555; font-size: 0.8em; bottom: 0.1em; font-weight: bold;&amp;quot; title=&amp;quot;连接到$1网页&amp;quot;&amp;gt;（$1）&amp;lt;/span&amp;gt;&#039;, &lt;br /&gt;
	[&#039;via&#039;] = &amp;quot; &amp;amp;ndash;通过$1&amp;quot;,&lt;br /&gt;
	[&#039;event&#039;] = &#039;事件发生在&#039;,&lt;br /&gt;
	[&#039;minutes&#039;] = &#039;记录于&#039;, &lt;br /&gt;
	&lt;br /&gt;
	[&#039;parameter-separator&#039;] = &#039;、&#039;,&lt;br /&gt;
	[&#039;parameter-final-separator&#039;] = &#039;和&#039;,&lt;br /&gt;
	[&#039;parameter-pair-separator&#039;] = &#039;和&#039;,&lt;br /&gt;
	&lt;br /&gt;
	-- Determines the location of the help page&lt;br /&gt;
	[&#039;help page link&#039;] = &#039;Help:引文格式1错误&#039;,&lt;br /&gt;
	[&#039;help page label&#039;] = &#039;帮助&#039;,&lt;br /&gt;
	&lt;br /&gt;
	-- Internal errors (should only occur if configuration is bad)&lt;br /&gt;
	[&#039;undefined_error&#039;] = &#039;调用了一个未定义的错误条件&#039;,&lt;br /&gt;
	[&#039;unknown_manual_ID&#039;] = &#039;无法识别的手动ID模式&#039;,&lt;br /&gt;
	[&#039;unknown_ID_mode&#039;] = &#039;无法识别的ID模式&#039;,&lt;br /&gt;
	[&#039;unknown_argument_map&#039;] = &#039;Argument map not defined for this variable&#039;,&lt;br /&gt;
	[&#039;bare_url_no_origin&#039;] = &#039;Bare url found but origin indicator is nil or empty&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; P R E S E N T A T I O N &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Fixed presentation markup.  Originally part of citation_config.messages it has been moved into its own, more semantically&lt;br /&gt;
correct place.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
local presentation = &lt;br /&gt;
	{&lt;br /&gt;
	-- Error output&lt;br /&gt;
	-- .error class is specified at https://git.wikimedia.org/blob/mediawiki%2Fcore.git/9553bd02a5595da05c184f7521721fb1b79b3935/skins%2Fcommon%2Fshared.css#L538&lt;br /&gt;
	-- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display&lt;br /&gt;
	[&#039;hidden-error&#039;] = &#039;&amp;lt;span style=&amp;quot;display:none;font-size:100%&amp;quot; class=&amp;quot;error citation-comment&amp;quot;&amp;gt;$1&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
	[&#039;visible-error&#039;] = &#039;&amp;lt;span style=&amp;quot;font-size:100%&amp;quot; class=&amp;quot;error citation-comment&amp;quot;&amp;gt;$1&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;accessdate&#039;] = &#039;&amp;lt;span class=&amp;quot;reference-accessdate&amp;quot;&amp;gt;$2&amp;lt;/span&amp;gt;&#039;,			-- to allow editors to hide accessdate using personal css&lt;br /&gt;
&lt;br /&gt;
	[&#039;bdi&#039;] = &#039;&amp;lt;bdi$1&amp;gt;$2&amp;lt;/bdi&amp;gt;&#039;,												-- bidirectional isolation used with |script-title= and the like&lt;br /&gt;
&lt;br /&gt;
	[&#039;format&#039;] = &#039; &amp;lt;span style=&amp;quot;font-size:85%;&amp;quot;&amp;gt;($1)&amp;lt;/span&amp;gt;&#039;,					-- for |format=, |chapter-format=, etc&lt;br /&gt;
&lt;br /&gt;
	[&#039;italic-title&#039;] = &amp;quot;$1&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;kern-left&#039;] = &#039;&amp;lt;span style=&amp;quot;padding-left:0.2em;&amp;quot;&amp;gt;$1&amp;lt;/span&amp;gt;$2&#039;,			-- spacing to use when title contains leading single or double quote mark&lt;br /&gt;
	[&#039;kern-right&#039;] = &#039;$1&amp;lt;span style=&amp;quot;padding-right:0.2em;&amp;quot;&amp;gt;$2&amp;lt;/span&amp;gt;&#039;,			-- spacing to use when title contains trailing single or double quote mark&lt;br /&gt;
&lt;br /&gt;
	[&#039;nowrap1&#039;] = &#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;$1&amp;lt;/span&amp;gt;&#039;,								-- for nowrapping an item: &amp;lt;span ...&amp;gt;yyyy-mm-dd&amp;lt;/span&amp;gt;&lt;br /&gt;
	[&#039;nowrap2&#039;] = &#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;$1&amp;lt;/span&amp;gt; $2&#039;,							-- for nowrapping portions of an item: &amp;lt;span ...&amp;gt;dd mmmm&amp;lt;/span&amp;gt; yyyy (note white space)&lt;br /&gt;
	&lt;br /&gt;
	[&#039;parameter&#039;] = &#039;&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;$1=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;quoted-text&#039;] = &#039;&amp;lt;q&amp;gt;$1&amp;lt;/q&amp;gt;&#039;,												-- for wrapping |quote= content&lt;br /&gt;
	[&#039;quoted-title&#039;] = &#039;$1&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;trans-italic-title&#039;] = &amp;quot;&amp;amp;#91;$1&amp;amp;#93;&amp;quot;,&lt;br /&gt;
	[&#039;trans-quoted-title&#039;] = &amp;quot;&amp;amp;#91;$1&amp;amp;#93;&amp;quot;,&lt;br /&gt;
	[&#039;vol-bold&#039;] = &#039; &amp;lt;b&amp;gt;$1&amp;lt;/b&amp;gt;&#039;,													-- for journal cites; for other cites [&#039;vol&#039;] in messages{}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A L I A S E S &amp;gt;----------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Aliases table for commonly passed parameters&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local aliases = {&lt;br /&gt;
	[&#039;AccessDate&#039;] = {&#039;access-date&#039;, &#039;accessdate&#039;},&lt;br /&gt;
	[&#039;Agency&#039;] = &#039;agency&#039;,&lt;br /&gt;
	[&#039;AirDate&#039;] = {&#039;air-date&#039;, &#039;airdate&#039;},&lt;br /&gt;
	[&#039;ArchiveDate&#039;] = {&#039;archive-date&#039;, &#039;archivedate&#039;},&lt;br /&gt;
	[&#039;ArchiveFormat&#039;] = &#039;archive-format&#039;,&lt;br /&gt;
	[&#039;ArchiveURL&#039;] = {&#039;archive-url&#039;, &#039;archiveurl&#039;},&lt;br /&gt;
	[&#039;ASINTLD&#039;] = {&#039;ASIN-TLD&#039;, &#039;asin-tld&#039;},&lt;br /&gt;
	[&#039;At&#039;] = &#039;at&#039;,&lt;br /&gt;
	[&#039;Authors&#039;] = {&#039;authors&#039;, &#039;people&#039;, &#039;host&#039;, &#039;credits&#039;},&lt;br /&gt;
	[&#039;BookTitle&#039;] = {&#039;book-title&#039;, &#039;booktitle&#039;},&lt;br /&gt;
	[&#039;Callsign&#039;] = {&#039;call-sign&#039;, &#039;callsign&#039;},									-- cite interview&lt;br /&gt;
	[&#039;Cartography&#039;] = &#039;cartography&#039;,&lt;br /&gt;
	[&#039;Chapter&#039;] = {&#039;chapter&#039;, &#039;contribution&#039;, &#039;entry&#039;, &#039;article&#039;, &#039;section&#039;},&lt;br /&gt;
	[&#039;ChapterFormat&#039;] = {&#039;chapter-format&#039;, &#039;contribution-format&#039;, &#039;section-format&#039;};&lt;br /&gt;
	[&#039;ChapterURL&#039;] = {&#039;chapter-url&#039;, &#039;chapterurl&#039;, &#039;contribution-url&#039;, &#039;contributionurl&#039;, &#039;section-url&#039;, &#039;sectionurl&#039;},&lt;br /&gt;
	[&#039;City&#039;] = &#039;city&#039;,															-- cite interview&lt;br /&gt;
	[&#039;Class&#039;] = &#039;class&#039;,														-- cite arxiv and arxiv identifiers&lt;br /&gt;
	[&#039;Coauthors&#039;] = {&#039;coauthors&#039;, &#039;coauthor&#039;},									-- coauthor and coauthors are deprecated; remove after 1 January 2015?&lt;br /&gt;
	[&#039;Conference&#039;] = {&#039;conference&#039;, &#039;event&#039;},&lt;br /&gt;
	[&#039;ConferenceFormat&#039;] = {&#039;conference-format&#039;, &#039;event-format&#039;},&lt;br /&gt;
	[&#039;ConferenceURL&#039;] = {&#039;conference-url&#039;, &#039;conferenceurl&#039;, &#039;event-url&#039;, &#039;eventurl&#039;},&lt;br /&gt;
	[&#039;Contribution&#039;] = &#039;contribution&#039;,											-- introduction, foreword, afterword, etc; required when |contributor= set&lt;br /&gt;
	[&#039;Date&#039;] = {&#039;date&#039;, &#039;air-date&#039;, &#039;airdate&#039;},&lt;br /&gt;
	[&#039;DeadURL&#039;] = {&#039;dead-url&#039;, &#039;deadurl&#039;},&lt;br /&gt;
	[&#039;Degree&#039;] = &#039;degree&#039;,&lt;br /&gt;
	[&#039;DisplayAuthors&#039;] = {&#039;display-authors&#039;, &#039;displayauthors&#039;},&lt;br /&gt;
	[&#039;DisplayEditors&#039;] = {&#039;display-editors&#039;, &#039;displayeditors&#039;},&lt;br /&gt;
	[&#039;Docket&#039;] = &#039;docket&#039;,&lt;br /&gt;
	[&#039;DoiBroken&#039;] = {&#039;doi-broken&#039;, &#039;doi-broken-date&#039;, &#039;doi-inactive-date&#039;, &#039;doi_brokendate&#039;, &#039;doi_inactivedate&#039;},&lt;br /&gt;
	[&#039;Edition&#039;] = &#039;edition&#039;,&lt;br /&gt;
	[&#039;Editors&#039;] = &#039;editors&#039;,&lt;br /&gt;
	[&#039;Embargo&#039;] = &#039;embargo&#039;,&lt;br /&gt;
	[&#039;Encyclopedia&#039;] = {&#039;encyclopedia&#039;, &#039;encyclopaedia&#039;},						-- this one only used by citation&lt;br /&gt;
	[&#039;Episode&#039;] = &#039;episode&#039;,													-- cite serial only TODO: make available to cite episode?&lt;br /&gt;
	[&#039;Format&#039;] = &#039;format&#039;,&lt;br /&gt;
	[&#039;ID&#039;] = {&#039;id&#039;, &#039;ID&#039;},&lt;br /&gt;
	[&#039;IgnoreISBN&#039;] = {&#039;ignore-isbn-error&#039;, &#039;ignoreisbnerror&#039;},&lt;br /&gt;
	[&#039;Inset&#039;] = &#039;inset&#039;,&lt;br /&gt;
	[&#039;Issue&#039;] = {&#039;issue&#039;, &#039;number&#039;},&lt;br /&gt;
	[&#039;Language&#039;] = {&#039;language&#039;, &#039;in&#039;},&lt;br /&gt;
	[&#039;LastAuthorAmp&#039;] = {&#039;last-author-amp&#039;, &#039;lastauthoramp&#039;},&lt;br /&gt;
	[&#039;LayDate&#039;] = {&#039;lay-date&#039;, &#039;laydate&#039;},&lt;br /&gt;
	[&#039;LayFormat&#039;] = &#039;lay-format&#039;,&lt;br /&gt;
	[&#039;LaySource&#039;] = {&#039;lay-source&#039;, &#039;laysource&#039;},&lt;br /&gt;
	[&#039;LayURL&#039;] = {&#039;lay-url&#039;, &#039;lay-summary&#039;, &#039;layurl&#039;, &#039;laysummary&#039;},&lt;br /&gt;
	[&#039;MailingList&#039;] = {&#039;mailinglist&#039;, &#039;mailing-list&#039;},							-- cite mailing list only&lt;br /&gt;
	[&#039;Map&#039;] = &#039;map&#039;,															-- cite map only&lt;br /&gt;
	[&#039;MapFormat&#039;] = &#039;map-format&#039;,												-- cite map only&lt;br /&gt;
	[&#039;MapURL&#039;] = {&#039;mapurl&#039;, &#039;map-url&#039;},											-- cite map only&lt;br /&gt;
	[&#039;MessageID&#039;] = &#039;message-id&#039;,&lt;br /&gt;
	[&#039;Minutes&#039;] = &#039;minutes&#039;,&lt;br /&gt;
	[&#039;Mode&#039;] = &#039;mode&#039;,&lt;br /&gt;
	[&#039;NameListFormat&#039;] = &#039;name-list-format&#039;,&lt;br /&gt;
	[&#039;Network&#039;] = &#039;network&#039;,&lt;br /&gt;
	[&#039;NoPP&#039;] = {&#039;no-pp&#039;, &#039;nopp&#039;},&lt;br /&gt;
	[&#039;NoTracking&#039;] = {&#039;template-doc-demo&#039;, &#039;template doc demo&#039;, &#039;no-cat&#039;, &#039;nocat&#039;, &lt;br /&gt;
		&#039;no-tracking&#039;, &#039;notracking&#039;},&lt;br /&gt;
	[&#039;Number&#039;] = &#039;number&#039;,														-- this case only for cite techreport&lt;br /&gt;
	[&#039;OrigYear&#039;] = {&#039;orig-year&#039;, &#039;origyear&#039;},&lt;br /&gt;
	[&#039;Others&#039;] = {&#039;others&#039;, &#039;interviewer&#039;, &#039;interviewers&#039;},&lt;br /&gt;
	[&#039;Page&#039;] = {&#039;p&#039;, &#039;page&#039;},&lt;br /&gt;
	[&#039;Pages&#039;] = {&#039;pp&#039;, &#039;pages&#039;},&lt;br /&gt;
	[&#039;Periodical&#039;] = {&#039;journal&#039;, &#039;newspaper&#039;, &#039;magazine&#039;, &#039;work&#039;,&lt;br /&gt;
		&#039;website&#039;,  &#039;periodical&#039;, &#039;encyclopedia&#039;, &#039;encyclopaedia&#039;, &#039;dictionary&#039;, &#039;mailinglist&#039;},&lt;br /&gt;
	[&#039;Place&#039;] = {&#039;place&#039;, &#039;location&#039;},&lt;br /&gt;
	[&#039;Program&#039;] = &#039;program&#039;,													-- cite interview&lt;br /&gt;
	[&#039;PostScript&#039;] = &#039;postscript&#039;,&lt;br /&gt;
	[&#039;PublicationDate&#039;] = {&#039;publicationdate&#039;, &#039;publication-date&#039;},&lt;br /&gt;
	[&#039;PublicationPlace&#039;] = {&#039;publication-place&#039;, &#039;publicationplace&#039;},&lt;br /&gt;
	[&#039;PublisherName&#039;] = {&#039;publisher&#039;, &#039;distributor&#039;, &#039;institution&#039;, &#039;newsgroup&#039;},&lt;br /&gt;
	[&#039;Quote&#039;] = {&#039;quote&#039;, &#039;quotation&#039;},&lt;br /&gt;
	[&#039;Ref&#039;] = &#039;ref&#039;,&lt;br /&gt;
	[&#039;RegistrationRequired&#039;] = &#039;registration&#039;,&lt;br /&gt;
	[&#039;Scale&#039;] = &#039;scale&#039;,&lt;br /&gt;
	[&#039;ScriptChapter&#039;] = &#039;script-chapter&#039;,&lt;br /&gt;
	[&#039;ScriptTitle&#039;] = &#039;script-title&#039;,&lt;br /&gt;
	[&#039;Section&#039;] = &#039;section&#039;,&lt;br /&gt;
	[&#039;Season&#039;] = &#039;season&#039;,&lt;br /&gt;
	[&#039;Sections&#039;] = &#039;sections&#039;,													-- cite map only&lt;br /&gt;
	[&#039;Series&#039;] = {&#039;series&#039;, &#039;version&#039;},&lt;br /&gt;
	[&#039;SeriesSeparator&#039;] = &#039;series-separator&#039;,&lt;br /&gt;
	[&#039;SeriesLink&#039;] = {&#039;series-link&#039;, &#039;serieslink&#039;},&lt;br /&gt;
	[&#039;SeriesNumber&#039;] = {&#039;series-number&#039;, &#039;series-no&#039;, &#039;seriesnumber&#039;, &#039;seriesno&#039;},&lt;br /&gt;
	[&#039;Sheet&#039;] = &#039;sheet&#039;,														-- cite map only&lt;br /&gt;
	[&#039;Sheets&#039;] = &#039;sheets&#039;,														-- cite map only&lt;br /&gt;
	[&#039;Station&#039;] = &#039;station&#039;,&lt;br /&gt;
	[&#039;SubscriptionRequired&#039;] = &#039;subscription&#039;,&lt;br /&gt;
	[&#039;Time&#039;] = &#039;time&#039;,&lt;br /&gt;
	[&#039;TimeCaption&#039;] = {&#039;time-caption&#039;, &#039;timecaption&#039;},&lt;br /&gt;
	[&#039;Title&#039;] = &#039;title&#039;,&lt;br /&gt;
	[&#039;TitleLink&#039;] = {&#039;title-link&#039;, &#039;episode-link&#039;, &#039;titlelink&#039;, &#039;episodelink&#039;},&lt;br /&gt;
	[&#039;TitleNote&#039;] = &#039;department&#039;,&lt;br /&gt;
	[&#039;TitleType&#039;] = {&#039;type&#039;, &#039;medium&#039;},&lt;br /&gt;
	[&#039;TransChapter&#039;] = {&#039;trans-chapter&#039;, &#039;trans_chapter&#039;},&lt;br /&gt;
	[&#039;TransMap&#039;] = &#039;trans-map&#039;,													-- cite map only&lt;br /&gt;
	[&#039;Transcript&#039;] = &#039;transcript&#039;,&lt;br /&gt;
	[&#039;TranscriptFormat&#039;] = &#039;transcript-format&#039;,&lt;br /&gt;
	[&#039;TranscriptURL&#039;] = {&#039;transcript-url&#039;, &#039;transcripturl&#039;},&lt;br /&gt;
	[&#039;TransTitle&#039;] = {&#039;trans-title&#039;, &#039;trans_title&#039;, &#039;title_zh&#039;},&lt;br /&gt;
	[&#039;URL&#039;] = {&#039;url&#039;, &#039;URL&#039;},&lt;br /&gt;
	[&#039;Vauthors&#039;] = &#039;vauthors&#039;,&lt;br /&gt;
	[&#039;Veditors&#039;] = &#039;veditors&#039;,&lt;br /&gt;
	[&#039;Via&#039;] = &#039;via&#039;,&lt;br /&gt;
	[&#039;Volume&#039;] = &#039;volume&#039;,&lt;br /&gt;
	[&#039;Year&#039;] = &#039;year&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;AuthorList-First&#039;] = {&amp;quot;first#&amp;quot;, &amp;quot;given#&amp;quot;, &amp;quot;author-first#&amp;quot;, &amp;quot;author#-first&amp;quot;},&lt;br /&gt;
	[&#039;AuthorList-Last&#039;] = {&amp;quot;last#&amp;quot;, &amp;quot;author#&amp;quot;, &amp;quot;surname#&amp;quot;, &amp;quot;author-last#&amp;quot;, &amp;quot;author#-last&amp;quot;, &amp;quot;subject#&amp;quot;},&lt;br /&gt;
	[&#039;AuthorList-Link&#039;] = {&amp;quot;authorlink#&amp;quot;, &amp;quot;author-link#&amp;quot;, &amp;quot;author#-link&amp;quot;, &amp;quot;subjectlink#&amp;quot;, &amp;quot;author#link&amp;quot;, &amp;quot;subject-link#&amp;quot;, &amp;quot;subject#-link&amp;quot;, &amp;quot;subject#link&amp;quot;},&lt;br /&gt;
	[&#039;AuthorList-Mask&#039;] = {&amp;quot;author-mask#&amp;quot;, &amp;quot;authormask#&amp;quot;, &amp;quot;author#mask&amp;quot;, &amp;quot;author#-mask&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&#039;ContributorList-First&#039;] = {&#039;contributor-first#&#039;,&#039;contributor#-first&#039;},&lt;br /&gt;
	[&#039;ContributorList-Last&#039;] = {&#039;contributor#&#039;, &#039;contributor-last#&#039;, &#039;contributor#-last&#039;},&lt;br /&gt;
	[&#039;ContributorList-Link&#039;] = {&#039;contributor-link#&#039;, &#039;contributor#-link&#039;},&lt;br /&gt;
	[&#039;ContributorList-Mask&#039;] = {&#039;contributor-mask#&#039;, &#039;contributor#-mask&#039;},&lt;br /&gt;
&lt;br /&gt;
	[&#039;EditorList-First&#039;] = {&amp;quot;editor-first#&amp;quot;, &amp;quot;editor#-first&amp;quot;, &amp;quot;editor-given#&amp;quot;, &amp;quot;editor#-given&amp;quot;},&lt;br /&gt;
	[&#039;EditorList-Last&#039;] = {&amp;quot;editor#&amp;quot;, &amp;quot;editor-last#&amp;quot;, &amp;quot;editor#-last&amp;quot;, &amp;quot;editor-surname#&amp;quot;, &amp;quot;editor#-surname&amp;quot;},&lt;br /&gt;
	[&#039;EditorList-Link&#039;] = {&amp;quot;editor-link#&amp;quot;, &amp;quot;editor#-link&amp;quot;, &amp;quot;editorlink#&amp;quot;, &amp;quot;editor#link&amp;quot;},&lt;br /&gt;
	[&#039;EditorList-Mask&#039;] = {&amp;quot;editor-mask#&amp;quot;, &amp;quot;editor#-mask&amp;quot;, &amp;quot;editormask#&amp;quot;, &amp;quot;editor#mask&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&#039;TranslatorList-First&#039;] = {&#039;translator-first#&#039;,&#039;translator#-first&#039;},&lt;br /&gt;
	[&#039;TranslatorList-Last&#039;] = {&#039;translator#&#039;, &#039;translator-last#&#039;, &#039;translator#-last&#039;},&lt;br /&gt;
	[&#039;TranslatorList-Link&#039;] = {&#039;translator-link#&#039;, &#039;translator#-link&#039;},&lt;br /&gt;
	[&#039;TranslatorList-Mask&#039;] = {&#039;translator-mask#&#039;, &#039;translator#-mask&#039;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; D E F A U L T S &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Default parameter values&lt;br /&gt;
&lt;br /&gt;
TODO: keep this?  Only one default?&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local defaults = {&lt;br /&gt;
	[&#039;DeadURL&#039;] = &#039;yes&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; V O L U M E ,  I S S U E ,  P A G E S &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
These tables hold cite class values (from the template invocation) and identify those templates that support&lt;br /&gt;
|volume=, |issue=, and |page(s)= parameters.  Cite conference and cite map require further qualification which&lt;br /&gt;
is handled in the main module.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local templates_using_volume = {&#039;citation&#039;, &#039;audio-visual&#039;, &#039;book&#039;, &#039;conference&#039;, &#039;encyclopaedia&#039;, &#039;interview&#039;, &#039;journal&#039;, &#039;magazine&#039;, &#039;map&#039;, &#039;news&#039;, &#039;report&#039;, &#039;techreport&#039;}&lt;br /&gt;
local templates_using_issue = {&#039;citation&#039;, &#039;conference&#039;, &#039;episode&#039;, &#039;interview&#039;, &#039;journal&#039;, &#039;magazine&#039;, &#039;map&#039;, &#039;news&#039;}&lt;br /&gt;
local templates_not_using_page = {&#039;audio-visual&#039;, &#039;episode&#039;, &#039;mailinglist&#039;, &#039;newsgroup&#039;, &#039;podcast&#039;, &#039;serial&#039;, &#039;sign&#039;, &#039;speech&#039;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; K E Y W O R D S &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This table holds keywords for those parameters that have defined sets of acceptible keywords.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local keywords = {&lt;br /&gt;
	[&#039;yes_true_y&#039;] = {&#039;yes&#039;, &#039;true&#039;, &#039;y&#039;},										-- ignore-isbn-error, last-author-amp, no-tracking, nopp, registration, subscription&lt;br /&gt;
	[&#039;deadurl&#039;] = {&#039;yes&#039;, &#039;true&#039;, &#039;y&#039;, &#039;no&#039;, &#039;unfit&#039;, &#039;usurped&#039;},&lt;br /&gt;
	[&#039;mode&#039;] = {&#039;cs1&#039;, &#039;cs2&#039;},&lt;br /&gt;
	[&#039;name-list-format&#039;] = {&#039;vanc&#039;},&lt;br /&gt;
	[&#039;contribution&#039;] = {&#039;afterword&#039;, &#039;foreword&#039;, &#039;introduction&#039;, &#039;preface&#039;},	-- generic contribution titles that are rendered unquoted in the &#039;chapter&#039; position&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I N V I S I B L E _ C H A R A C T E R S &amp;gt;--------------------------------------&lt;br /&gt;
&lt;br /&gt;
This table holds non-printing or invisible characters indexed either by name or by Unicode group. Values are decimal&lt;br /&gt;
representations of UTF-8 codes.  The table is organized as a table of tables because the lua pairs keyword returns&lt;br /&gt;
table data in an arbitrary order.  Here, we want to process the table from top to bottom because the entries at&lt;br /&gt;
the top of the table are also found in the ranges specified by the entries at the bottom of the table.&lt;br /&gt;
&lt;br /&gt;
This list contains patterns for templates like {{&#039;}} which isn&#039;t an error but transcludes characters that are&lt;br /&gt;
invisible.  These kinds of patterns must be recognized by the functions that use this list.&lt;br /&gt;
&lt;br /&gt;
Also here is a pattern that recognizes stripmarkers that begin and end with the delete characters.  The nowiki&lt;br /&gt;
stripmarker is not an error but some others are because the parameter values that include them become part of the&lt;br /&gt;
template&#039;s metadata before stripmarker replacement.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local invisible_chars = {&lt;br /&gt;
	{&#039;replacement&#039;, &#039;\239\191\189&#039;},											-- U+FFFD, EF BF BD&lt;br /&gt;
	{&#039;apostrophe&#039;, &#039;&amp;amp;zwj;\226\128\138\039\226\128\139&#039;},						-- apostrophe template: &amp;amp;zwj; hair space &#039; zero-width space; not an error&lt;br /&gt;
	{&#039;apostrophe&#039;, &#039;\226\128\138\039\226\128\139&#039;},								-- apostrophe template: hair space &#039; zero-width space; (as of 2015-12-11) not an error&lt;br /&gt;
	{&#039;zero width joiner&#039;, &#039;\226\128\141&#039;},										-- U+200D, E2 80 8D&lt;br /&gt;
	{&#039;zero width space&#039;, &#039;\226\128\139&#039;},										-- U+200B, E2 80 8B&lt;br /&gt;
	{&#039;hair space&#039;, &#039;\226\128\138&#039;},												-- U+200A, E2 80 8A&lt;br /&gt;
	{&#039;soft hyphen&#039;, &#039;\194\173&#039;},												-- U+00AD, C2 AD&lt;br /&gt;
	{&#039;horizontal tab&#039;, &#039;\009&#039;},													-- U+0009 (HT), 09&lt;br /&gt;
	{&#039;line feed&#039;, &#039;\010&#039;},														-- U+0010 (LF), 0A&lt;br /&gt;
	{&#039;carriage return&#039;, &#039;\013&#039;},												-- U+0013 (CR), 0D&lt;br /&gt;
--	{&#039;nowiki stripmarker&#039;, &#039;\127UNIQ%-%-nowiki%-[%a%d]+%-QINU\127&#039;},			-- nowiki stripmarker; not an error&lt;br /&gt;
	{&#039;stripmarker&#039;, &#039;\127UNIQ%-%-(%a+)%-[%a%d]+%-QINU\127&#039;},					-- stripmarker; may or may not be an error; capture returns the stripmaker type&lt;br /&gt;
	{&#039;delete&#039;, &#039;\127&#039;},															-- U+007F (DEL), 7F; must be done after stripmarker test&lt;br /&gt;
	{&#039;C0 control&#039;, &#039;[\000-\008\011\012\014-\031]&#039;},								-- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D))&lt;br /&gt;
	{&#039;C1 control&#039;, &#039;[\194\128-\194\159]&#039;},										-- U+0080–U+009F (XXX–APC), C2 80 – C2 9F&lt;br /&gt;
	{&#039;Specials&#039;, &#039;[\239\191\185-\239\191\191]&#039;},								-- U+FFF9-U+FFFF, EF BF B9 – EF BF BF&lt;br /&gt;
	{&#039;Private use area&#039;, &#039;[\238\128\128-\239\163\191]&#039;},						-- U+E000–U+F8FF, EE 80 80 – EF A3 BF&lt;br /&gt;
	{&#039;Supplementary Private Use Area-A&#039;, &#039;[\243\176\128\128-\243\191\191\189]&#039;},	-- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD&lt;br /&gt;
	{&#039;Supplementary Private Use Area-B&#039;, &#039;[\244\128\128\128-\244\143\191\189]&#039;},	-- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A I N T E N A N C E _ C A T E G O R I E S &amp;gt;----------------------------------&lt;br /&gt;
&lt;br /&gt;
Here we name maintenance categories to be used in maintenance messages.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local maint_cats = {&lt;br /&gt;
	[&#039;ASIN&#039;] = &#039;引文格式1维护：ASIN使用ISBN&#039;,&lt;br /&gt;
	[&#039;date_year&#039;] = &#039;引文格式1维护：日期与年&#039;,&lt;br /&gt;
	[&#039;disp_auth_ed&#039;] = &#039;引文格式1维护：显示－作者&#039;,									-- $1 is authors or editors&lt;br /&gt;
	[&#039;embargo&#039;] = &#039;引文格式1维护：PMC封锁过期&#039;,&lt;br /&gt;
	[&#039;english&#039;] = &#039;CS1 maint: English language specified&#039;,&lt;br /&gt;
	[&#039;etal&#039;] = &#039;引文格式1维护：显式使用等标签&#039;,&lt;br /&gt;
	[&#039;extra_text&#039;] = &#039;引文格式1维护：冗余文本&#039;,&lt;br /&gt;
	[&#039;unknown_lang&#039;] = &#039;引文格式1维护：未识别语文类型&#039;,&lt;br /&gt;
	[&#039;untitled&#039;] = &#039;引文格式1维护：无标题期刊&#039;,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; P R O P E R T I E S _ C A T E G O R I E S &amp;gt;------------------------------------&lt;br /&gt;
&lt;br /&gt;
Here we name properties categories&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local prop_cats = {&lt;br /&gt;
	[&#039;foreign_lang_source&#039;] = &#039;CS1$1来源 ($2)&#039;,					-- |language= categories; $1 is language name, $2 is ISO639-1 code&lt;br /&gt;
	[&#039;script&#039;] = &#039;CS1含有外文文本&#039;,							-- when language specified by |script-title=xx: doesn&#039;t have its own category&lt;br /&gt;
	[&#039;script_with_name&#039;] = &#039;CS1含有$1文本 ($2)&#039;,					-- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T I T L E _ T Y P E S &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Here we map a template&#039;s CitationClass to TitleType (default values for |type= parameter)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local title_types = {&lt;br /&gt;
	[&#039;AV-media-notes&#039;] = &#039;Media notes&#039;,&lt;br /&gt;
	[&#039;DVD-notes&#039;] = &#039;Media notes&#039;,&lt;br /&gt;
	[&#039;mailinglist&#039;] = &#039;Mailing list&#039;,&lt;br /&gt;
	[&#039;map&#039;] = &#039;Map&#039;,&lt;br /&gt;
	[&#039;podcast&#039;] = &#039;Podcast&#039;,&lt;br /&gt;
	[&#039;pressrelease&#039;] = &#039;新闻稿&#039;,&lt;br /&gt;
	[&#039;report&#039;] = &#039;Report&#039;,&lt;br /&gt;
	[&#039;techreport&#039;] = &#039;Technical report&#039;,&lt;br /&gt;
	[&#039;thesis&#039;] = &#039;Thesis&#039;,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E R R O R _ C O N D I T I O N S &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Error condition table&lt;br /&gt;
&lt;br /&gt;
The following contains a list of IDs for various error conditions defined in the code.  For each ID, we specify a&lt;br /&gt;
text message to display, an error category to include, and whether the error message should be wrapped as a hidden comment.&lt;br /&gt;
&lt;br /&gt;
Anchor changes require identical changes to matching anchor in Help:CS1 errors&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local error_conditions = {&lt;br /&gt;
	accessdate_missing_url = {&lt;br /&gt;
		message = &#039;使用&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;accessdate=&amp;lt;/code&amp;gt;需要含有&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;url=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;accessdate_missing_url&#039;,&lt;br /&gt;
		category = &#039;含有访问日期但无网址的引用的页面&#039;,&lt;br /&gt;
		hidden = true },&lt;br /&gt;
	archive_missing_date = {&lt;br /&gt;
		message = &#039;使用&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;archiveurl=&amp;lt;/code&amp;gt;需要含有&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;archivedate=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;archive_missing_date&#039;,&lt;br /&gt;
		category = &#039;含有存档网址错误的引用的页面‎&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	archive_missing_url = {&lt;br /&gt;
		message = &#039;使用&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;archiveurl=&amp;lt;/code&amp;gt;需要含有&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;url=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;archive_missing_url&#039;,&lt;br /&gt;
		category = &#039;含有存档网址错误的引用的页面‎&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	arxiv_missing = {&lt;br /&gt;
		message = &#039;需要使用&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;arxiv=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;arxiv_missing&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：arXiv&#039;,											-- same as bad arxiv&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	arxiv_params_not_supported = {&lt;br /&gt;
		message = &#039;不支持的参数使用了arXiv&#039;,&lt;br /&gt;
		anchor = &#039;arxiv_params_not_supported&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：arXiv&#039;,											-- same as bad arxiv&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_arxiv = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;arxiv=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_arxiv&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：arXiv&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_asin = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;asin=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_asin&#039;,&lt;br /&gt;
		category =&#039;引文格式1错误：ASIN&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_date = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;$1&amp;lt;/code&amp;gt;中的日期值&#039;,&lt;br /&gt;
		anchor = &#039;bad_date&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：日期&#039;,&lt;br /&gt;
		hidden = true },&lt;br /&gt;
	bad_doi = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;doi=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_doi&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：DOI&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_isbn = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;isbn=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_isbn&#039;,&lt;br /&gt;
		category = &#039;含有ISBN错误的引用的页面&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_ismn = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;ismn=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_ismn&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：ISMN&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_issn = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;issn=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_issn&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：ISSN&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_lccn = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;lccn=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_lccn&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：LCCN&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_message_id = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;message-id=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_message_id&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：message-id&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_ol = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;ol=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_ol&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：OL&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_paramlink = {															-- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link=&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;$1=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_paramlink&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：参数链接&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_pmc = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;pmc=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_pmc&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：PMC&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_pmid = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;pmid=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_pmid&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：PMID&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bad_url = {&lt;br /&gt;
		message = &#039;请检查&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;url=&amp;lt;/code&amp;gt;值&#039;,&lt;br /&gt;
		anchor = &#039;bad_url&#039;,&lt;br /&gt;
		category = &#039;含有网址格式错误的引用的页面&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	bare_url_missing_title = {&lt;br /&gt;
		message = &#039;$1缺少标题&#039;,&lt;br /&gt;
		anchor = &#039;bare_url_missing_title&#039;,&lt;br /&gt;
		category = &#039;含有裸露网址的引用的页面‎&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	chapter_ignored = {&lt;br /&gt;
		message = &#039;&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;$1=&amp;lt;/code&amp;gt;被忽略&#039;,&lt;br /&gt;
		anchor = &#039;chapter_ignored&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：章节参数被忽略&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	citation_missing_title = {&lt;br /&gt;
		message = &#039;缺少或&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;title=&amp;lt;/code&amp;gt;为空&#039;,&lt;br /&gt;
		anchor = &#039;citation_missing_title&#039;,&lt;br /&gt;
		category = &#039;含有缺少标题的引用的页面‎&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	cite_web_url = {&lt;br /&gt;
-- this error applies to cite web and to cite podcast&lt;br /&gt;
		message = &#039;缺少或&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;url=&amp;lt;/code&amp;gt;为空&#039;,&lt;br /&gt;
		anchor = &#039;cite_web_url&#039;,&lt;br /&gt;
		category = &#039;含有缺少网址的网站引用的页面‎&#039;,&lt;br /&gt;
		hidden = true },&lt;br /&gt;
	coauthors_missing_author = {&lt;br /&gt;
		message = &#039;使用&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;coauthors=&amp;lt;/code&amp;gt;需要含有&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;author=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;coauthors_missing_author&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：无主作者的合作者&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	contributor_ignored = {&lt;br /&gt;
		message = &#039;&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;contributor=&amp;lt;/code&amp;gt;被忽略&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;contributor_ignored&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：合作者&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	contributor_missing_required_param = {&lt;br /&gt;
		message = &#039;使用&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;contributor=&amp;lt;/code&amp;gt;需要含有&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;$1=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;contributor_missing_required_param&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：合作者&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	deprecated_params = {&lt;br /&gt;
		message = &#039;引文使用过时参数&#039;,&lt;br /&gt;
		anchor = &#039;deprecated_params&#039;,&lt;br /&gt;
		category = &#039;含有过时参数的引用的页面&#039;,&lt;br /&gt;
		hidden = true },&lt;br /&gt;
	empty_citation = {&lt;br /&gt;
		message = &#039;空引用&#039;,&lt;br /&gt;
		anchor = &#039;empty_citation&#039;,&lt;br /&gt;
		category = &#039;含有空引用的页面&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	first_missing_last = {&lt;br /&gt;
		message = &#039;$1列表中的&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;first$2=&amp;lt;/code&amp;gt;缺少&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;last$2=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;first_missing_last&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：缺少作者或编者&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	format_missing_url = {&lt;br /&gt;
		message = &#039;使用&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;format=&amp;lt;/code&amp;gt;需要含有&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;url=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;format_missing_url&#039;,&lt;br /&gt;
		category = &#039;含有格式却不含网址的引用的页面‎&#039;,&lt;br /&gt;
		hidden = true },&lt;br /&gt;
	implict_etal_editor = {&lt;br /&gt;
		message = &#039;建议使用&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;displayeditors=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;displayeditors&#039;,&lt;br /&gt;
		category = &#039;含有旧式缩略标签的引用的页面 in editors‎&#039;,&lt;br /&gt;
		hidden = true },&lt;br /&gt;
	invalid_param_val = {&lt;br /&gt;
		message = &#039;无效&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;$1=$2&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;invalid_param_val&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：无效参数值&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	invisible_char = {&lt;br /&gt;
		message = &#039;参数$2值左起第$3位存在$1&#039;,&lt;br /&gt;
		anchor = &#039;invisible_char&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：不可见字符&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	missing_name = {&lt;br /&gt;
		message = &#039;$1列表缺少&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;last$2=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;missing_name&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：缺少作者或编者&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	param_has_ext_link = {&lt;br /&gt;
		message = &#039;外部链接存在于&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;$1&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;param_has_ext_link&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：外部链接&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	parameter_ignored = {&lt;br /&gt;
		message = &#039;已忽略未知参数&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;$1=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;parameter_ignored&#039;,&lt;br /&gt;
		category = &#039;含有未知参数的引用的页面&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	parameter_ignored_suggest = {&lt;br /&gt;
		message = &#039;已忽略未知参数&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;$1=&amp;lt;/code&amp;gt;（建议使用&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;$2=&amp;lt;/code&amp;gt;）&#039;,&lt;br /&gt;
		anchor = &#039;parameter_ignored_suggest&#039;,&lt;br /&gt;
		category = &#039;含有未知参数的引用的页面&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	redundant_parameters = {&lt;br /&gt;
		message = &#039;$1只需其一&#039;,&lt;br /&gt;
		anchor = &#039;redundant_parameters&#039;,&lt;br /&gt;
		category = &#039;含有冗余参数的引用的页面&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	text_ignored = {&lt;br /&gt;
		message = &#039;已忽略文本“$1”&#039;,&lt;br /&gt;
		anchor = &#039;text_ignored&#039;,&lt;br /&gt;
		category = &#039;含有未命名参数的引用的页面&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	trans_missing_title = {&lt;br /&gt;
		message = &#039;使用&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;trans-title=&amp;lt;/code&amp;gt;需要含有&amp;lt;code style=&amp;quot;&#039;..code_style..&#039;&amp;quot;&amp;gt;&amp;amp;#124;title=&amp;lt;/code&amp;gt;&#039;,&lt;br /&gt;
		anchor = &#039;trans_missing_title&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：翻译标题&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	vancouver = {&lt;br /&gt;
		message = &#039;温哥华格式错误&#039;,&lt;br /&gt;
		anchor = &#039;vancouver&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：温哥华格式&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
	wikilink_in_url = {&lt;br /&gt;
		message = &#039;网址－维基内链冲突&#039;,&lt;br /&gt;
		anchor = &#039;wikilink_in_url&#039;,&lt;br /&gt;
		category = &#039;引文格式1错误：网址－维基内链冲突&#039;,&lt;br /&gt;
		hidden = false },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I D _ H A N D L E R S &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following contains a list of values for various defined identifiers.  For each identifier we specify a&lt;br /&gt;
variety of information necessary to properly render the identifier in the citation.&lt;br /&gt;
&lt;br /&gt;
	parameters: a list of parameter aliases for this identifier&lt;br /&gt;
	link: Wikipedia article name&lt;br /&gt;
	label: the alternate name to apply to link&lt;br /&gt;
	mode: 	&#039;manual&#039; when there is a specific function in the code to handle the identifier;&lt;br /&gt;
			&#039;external&#039; for identifiers that link outside of Wikipedia;&lt;br /&gt;
	prefix: the first part of a url that will be concatenated with a second part which usually contains the identifier&lt;br /&gt;
	encode: true if uri should be percent encoded; otherwise false&lt;br /&gt;
	COinS: identifier link or keyword for use in COinS:&lt;br /&gt;
		for identifiers registered at info-uri.info use: info:....&lt;br /&gt;
		for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn&lt;br /&gt;
		for others make a url using the value in prefix, use the keyword: pre (not checked; any text other than &#039;info&#039; or &#039;rft&#039; works here)&lt;br /&gt;
		set to nil to leave the identifier out of the COinS&lt;br /&gt;
	separator: character or text between label and the identifier in the rendered citation&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local id_handlers = {&lt;br /&gt;
	[&#039;ARXIV&#039;] = {&lt;br /&gt;
		parameters = {&#039;arxiv&#039;, &#039;ARXIV&#039;, &#039;eprint&#039;}, &lt;br /&gt;
		link = &#039;arXiv&#039;,&lt;br /&gt;
		label = &#039;arXiv&#039;,&lt;br /&gt;
		mode = &#039;manual&#039;,&lt;br /&gt;
		prefix = &#039;//arxiv.org/abs/&#039;, 											-- protocol relative tested 2013-09-04&lt;br /&gt;
		encode = false,&lt;br /&gt;
		COinS = &#039;info:arxiv&#039;,&lt;br /&gt;
		separator = &#039;:&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;ASIN&#039;] = {&lt;br /&gt;
		parameters = { &#039;asin&#039;, &#039;ASIN&#039; },	   &lt;br /&gt;
		link = &#039;亚马逊标准识别码&#039;,&lt;br /&gt;
		label = &#039;ASIN&#039;,&lt;br /&gt;
		mode = &#039;manual&#039;,&lt;br /&gt;
		prefix = &#039;//www.amazon.&#039;,&lt;br /&gt;
		COinS = nil,															-- no COinS for this id (needs thinking on implementation because |asin-tld=)&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
		encode = false;&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;BIBCODE&#039;] = {&lt;br /&gt;
		parameters = {&#039;bibcode&#039;, &#039;BIBCODE&#039;}, &lt;br /&gt;
		link = &#039;Bibcode&#039;,&lt;br /&gt;
		label = &#039;Bibcode&#039;,&lt;br /&gt;
		mode = &#039;external&#039;,&lt;br /&gt;
		prefix = &#039;http://adsabs.harvard.edu/abs/&#039;,&lt;br /&gt;
		encode = false,&lt;br /&gt;
		COinS = &#039;info:bibcode&#039;,&lt;br /&gt;
		separator = &#039;:&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;DOI&#039;] = {&lt;br /&gt;
		parameters = { &#039;doi&#039;, &#039;DOI&#039; },&lt;br /&gt;
		link = &#039;數位物件識別號&#039;,&lt;br /&gt;
		label = &#039;doi&#039;,&lt;br /&gt;
		mode = &#039;manual&#039;,&lt;br /&gt;
		prefix = &#039;//dx.doi.org/&#039;,&lt;br /&gt;
		COinS = &#039;info:doi&#039;,&lt;br /&gt;
		separator = &#039;:&#039;,&lt;br /&gt;
		encode = true,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;ISBN&#039;] = {&lt;br /&gt;
		parameters = {&#039;isbn&#039;, &#039;ISBN&#039;, &#039;isbn13&#039;, &#039;ISBN13&#039;}, &lt;br /&gt;
		link = &#039;国际标准书号&#039;,&lt;br /&gt;
		label = &#039;ISBN&#039;,&lt;br /&gt;
		mode = &#039;manual&#039;,&lt;br /&gt;
		prefix = &#039;Special:BookSources/&#039;,&lt;br /&gt;
		COinS = &#039;rft.isbn&#039;,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;ISMN&#039;] = {&lt;br /&gt;
		parameters = {&#039;ismn&#039;, &#039;ISMN&#039;}, &lt;br /&gt;
		link = &#039;International Standard Music Number&#039;,&lt;br /&gt;
		label = &#039;ISMN&#039;,&lt;br /&gt;
		mode = &#039;manual&#039;,&lt;br /&gt;
		prefix = &#039;&#039;,															-- not currently used; &lt;br /&gt;
		COinS = &#039;nil&#039;,															-- nil because we can&#039;t use pre or rft or info:&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;ISSN&#039;] = {&lt;br /&gt;
		parameters = {&#039;issn&#039;, &#039;ISSN&#039;}, &lt;br /&gt;
		link = &#039;国际标准连续出版物号&#039;,&lt;br /&gt;
		label = &#039;ISSN&#039;,&lt;br /&gt;
		mode = &#039;manual&#039;,&lt;br /&gt;
		prefix = &#039;//www.worldcat.org/issn/&#039;,&lt;br /&gt;
		COinS = &#039;rft.issn&#039;,&lt;br /&gt;
		encode = false,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;JFM&#039;] = {&lt;br /&gt;
		parameters = {&#039;jfm&#039;, &#039;JFM&#039;}, &lt;br /&gt;
		link = &#039;Jahrbuch über die Fortschritte der Mathematik&#039;,&lt;br /&gt;
		label = &#039;JFM&#039;,&lt;br /&gt;
		mode = &#039;external&#039;,&lt;br /&gt;
		prefix = &#039;//zbmath.org/?format=complete&amp;amp;q=an:&#039;,&lt;br /&gt;
		COinS = &#039;pre&#039;,															-- use prefix value&lt;br /&gt;
		encode = true,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;JSTOR&#039;] = {&lt;br /&gt;
		parameters = {&#039;jstor&#039;, &#039;JSTOR&#039;}, &lt;br /&gt;
		link = &#039;JSTOR&#039;,&lt;br /&gt;
		label = &#039;JSTOR&#039;,&lt;br /&gt;
		mode = &#039;external&#039;,&lt;br /&gt;
		prefix = &#039;//www.jstor.org/stable/&#039;, 									-- protocol relative tested 2013-09-04&lt;br /&gt;
		COinS = &#039;pre&#039;,															-- use prefix value&lt;br /&gt;
		encode = false,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;LCCN&#039;] = {&lt;br /&gt;
		parameters = {&#039;LCCN&#039;, &#039;lccn&#039;}, &lt;br /&gt;
		link = &#039;美国国会图书馆控制码&#039;,&lt;br /&gt;
		label = &#039;LCCN&#039;,&lt;br /&gt;
		mode = &#039;manual&#039;,&lt;br /&gt;
		prefix = &#039;http://lccn.loc.gov/&#039;,&lt;br /&gt;
		COinS = &#039;info:lccn&#039;,													-- use prefix value&lt;br /&gt;
		encode = false,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;MR&#039;] = {&lt;br /&gt;
		parameters = {&#039;MR&#039;, &#039;mr&#039;}, &lt;br /&gt;
		link = &#039;數學評論&#039;,&lt;br /&gt;
		label = &#039;MR&#039;,&lt;br /&gt;
		mode = &#039;external&#039;,&lt;br /&gt;
		prefix = &#039;//www.ams.org/mathscinet-getitem?mr=&#039;, 						-- protocol relative tested 2013-09-04&lt;br /&gt;
		COinS = &#039;pre&#039;,															-- use prefix value&lt;br /&gt;
		encode = true,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;OCLC&#039;] = {&lt;br /&gt;
		parameters = {&#039;OCLC&#039;, &#039;oclc&#039;}, &lt;br /&gt;
		link = &#039;OCLC&#039;,&lt;br /&gt;
		label = &#039;OCLC&#039;,&lt;br /&gt;
		mode = &#039;external&#039;,&lt;br /&gt;
		prefix = &#039;//www.worldcat.org/oclc/&#039;,&lt;br /&gt;
		COinS = &#039;info:oclcnum&#039;,&lt;br /&gt;
		encode = true,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;OL&#039;] = {&lt;br /&gt;
		parameters = { &#039;ol&#039;, &#039;OL&#039; },&lt;br /&gt;
		link = &#039;开放图书馆&#039;,&lt;br /&gt;
		label = &#039;OL&#039;,&lt;br /&gt;
		mode = &#039;manual&#039;,&lt;br /&gt;
		prefix = &#039;//openlibrary.org/&#039;,&lt;br /&gt;
		COinS = nil,															-- no COinS for this id (needs thinking on implementation because /authors/books/works/OL)&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
		endode = true,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;OSTI&#039;] = {&lt;br /&gt;
		parameters = {&#039;OSTI&#039;, &#039;osti&#039;}, &lt;br /&gt;
		link = &#039;科学和技术信息办公室&#039;,&lt;br /&gt;
		label = &#039;OSTI&#039;,&lt;br /&gt;
		mode = &#039;external&#039;,&lt;br /&gt;
		prefix = &#039;//www.osti.gov/energycitations/product.biblio.jsp?osti_id=&#039;,	-- protocol relative tested 2013-09-04&lt;br /&gt;
		COinS = &#039;pre&#039;,															-- use prefix value&lt;br /&gt;
		encode = true,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;PMC&#039;] = {&lt;br /&gt;
		parameters = {&#039;PMC&#039;, &#039;pmc&#039;}, &lt;br /&gt;
		link = &#039;公共医学中心&#039;,&lt;br /&gt;
		label = &#039;PMC&#039;,&lt;br /&gt;
		mode = &#039;manual&#039;,&lt;br /&gt;
		prefix = &#039;//www.ncbi.nlm.nih.gov/pmc/articles/PMC&#039;, &lt;br /&gt;
		suffix = &amp;quot; &amp;quot;,&lt;br /&gt;
		COinS = &#039;pre&#039;,															-- use prefix value&lt;br /&gt;
		encode = true,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;PMID&#039;] = {&lt;br /&gt;
		parameters = {&#039;PMID&#039;, &#039;pmid&#039;}, &lt;br /&gt;
		link = &#039;公共医学识别码&#039;,&lt;br /&gt;
		label = &#039;PMID&#039;,&lt;br /&gt;
		mode = &#039;manual&#039;,&lt;br /&gt;
		prefix = &#039;//www.ncbi.nlm.nih.gov/pubmed/&#039;,&lt;br /&gt;
		COinS = &#039;info:pmid&#039;,&lt;br /&gt;
		encode = false,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;RFC&#039;] = {&lt;br /&gt;
		parameters = {&#039;RFC&#039;, &#039;rfc&#039;}, &lt;br /&gt;
		link = &#039;徵求修正意見書&#039;,&lt;br /&gt;
		label = &#039;RFC&#039;,&lt;br /&gt;
		mode = &#039;external&#039;,&lt;br /&gt;
		prefix = &#039;//tools.ietf.org/html/rfc&#039;,&lt;br /&gt;
		COinS = &#039;pre&#039;,															-- use prefix value&lt;br /&gt;
		encode = false,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;SSRN&#039;] = {&lt;br /&gt;
		parameters = {&#039;SSRN&#039;, &#039;ssrn&#039;}, &lt;br /&gt;
		link = &#039;社会科学研究网络&#039;,&lt;br /&gt;
		label = &#039;SSRN&#039;,&lt;br /&gt;
		mode = &#039;external&#039;,&lt;br /&gt;
		prefix = &#039;//ssrn.com/abstract=&#039;, 										-- protocol relative tested 2013-09-04&lt;br /&gt;
		COinS = &#039;pre&#039;,															-- use prefix value&lt;br /&gt;
		encode = true,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;USENETID&#039;] = {&lt;br /&gt;
		parameters = {&#039;message-id&#039;},&lt;br /&gt;
		link = &#039;Usenet&#039;,&lt;br /&gt;
		label = &#039;Usenet:&#039;,&lt;br /&gt;
		mode = &#039;manual&#039;,&lt;br /&gt;
		prefix = &#039;news:&#039;,&lt;br /&gt;
		encode = false,&lt;br /&gt;
		COinS = &#039;pre&#039;,															-- use prefix value&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;ZBL&#039;] = {&lt;br /&gt;
		parameters = {&#039;ZBL&#039;, &#039;zbl&#039;}, &lt;br /&gt;
		link = &#039;Zentralblatt MATH&#039;,&lt;br /&gt;
		label = &#039;Zbl&#039;,&lt;br /&gt;
		mode = &#039;external&#039;,&lt;br /&gt;
		prefix = &#039;//zbmath.org/?format=complete&amp;amp;q=an:&#039;,&lt;br /&gt;
		COinS = &#039;pre&#039;,															-- use prefix value&lt;br /&gt;
		encode = true,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
-- LOCAL&lt;br /&gt;
	[&#039;CSBN&#039;] = {&lt;br /&gt;
		parameters = {&#039;unified&#039;, &#039;csbn&#039;, &#039;CSBN&#039;}, &lt;br /&gt;
		link = &#039;统一书号&#039;,&lt;br /&gt;
		label = &#039;CSBN&#039;,&lt;br /&gt;
		mode = &#039;external&#039;,&lt;br /&gt;
		prefix = &#039;http://book.douban.com/subject_search?search_text=SH&#039;,&lt;br /&gt;
		COinS = &#039;rft.csbn&#039;,&lt;br /&gt;
		encode = true,&lt;br /&gt;
		separator = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
	},&lt;br /&gt;
-- END LOCAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return 	{&lt;br /&gt;
	aliases = aliases,&lt;br /&gt;
	defaults = defaults,&lt;br /&gt;
	error_conditions = error_conditions,&lt;br /&gt;
	id_handlers = id_handlers,&lt;br /&gt;
	keywords = keywords,&lt;br /&gt;
	invisible_chars = invisible_chars,&lt;br /&gt;
	maint_cats = maint_cats,&lt;br /&gt;
	messages = messages,&lt;br /&gt;
	presentation = presentation,&lt;br /&gt;
	prop_cats = prop_cats,&lt;br /&gt;
	title_types = title_types,&lt;br /&gt;
	uncategorized_namespaces = uncategorized_namespaces,&lt;br /&gt;
	uncategorized_subpages = uncategorized_subpages,&lt;br /&gt;
	templates_using_volume = templates_using_volume,&lt;br /&gt;
	templates_using_issue = templates_using_issue,&lt;br /&gt;
	templates_not_using_page = templates_not_using_page,&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Module:Citation/CS1&amp;diff=7450</id>
		<title>Module:Citation/CS1</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Module:Citation/CS1&amp;diff=7450"/>
		<updated>2016-06-10T12:07:19Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​导入1个版本：Template:Cite web&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
local z = {&lt;br /&gt;
	error_categories = {};		-- for categorizing citations that contain errors&lt;br /&gt;
	error_ids = {};&lt;br /&gt;
	message_tail = {};&lt;br /&gt;
	maintenance_cats = {};		-- for categorizing citations that aren&#039;t erroneous per se, but could use a little work&lt;br /&gt;
	properties_cats = {};		-- for categorizing citations based on certain properties, language of source for instance&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; F O R W A R D   D E C L A R A T I O N S &amp;gt;--------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
local dates, year_date_check	-- functions in Module:Citation/CS1/Date_validation&lt;br /&gt;
&lt;br /&gt;
local cfg = {};					-- table of configuration tables that are defined in Module:Citation/CS1/Configuration&lt;br /&gt;
local whitelist = {};			-- table of tables listing valid template parameter names; defined in Module:Citation/CS1/Whitelist&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ S E T &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns true if argument is set; false otherwise. Argument is &#039;set&#039; when it exists (not nil) or when it is not an empty string.&lt;br /&gt;
This function is global because it is called from both this module and from Date validation&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
function is_set( var )&lt;br /&gt;
	return not (var == nil or var == &#039;&#039;);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; F I R S T _ S E T &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Locates and returns the first set value in a table of values where the order established in the table,&lt;br /&gt;
left-to-right (or top-to-bottom), is the order in which the values are evaluated.  Returns nil if none are set.&lt;br /&gt;
&lt;br /&gt;
This version replaces the original &#039;for _, val in pairs do&#039; and a similar version that used ipairs.  With the pairs&lt;br /&gt;
version the order of evaluation could not be guaranteed.  With the ipairs version, a nil value would terminate&lt;br /&gt;
the for-loop before it reached the actual end of the list.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function first_set (list, count)&lt;br /&gt;
	local i = 1;&lt;br /&gt;
	while i &amp;lt;= count do															-- loop through all items in list&lt;br /&gt;
		if is_set( list[i] ) then&lt;br /&gt;
			return list[i];														-- return the first set list member&lt;br /&gt;
		end&lt;br /&gt;
		i = i + 1;																-- point to next&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I N _ A R R A Y &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Whether needle is in haystack&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function in_array( needle, haystack )&lt;br /&gt;
	if needle == nil then&lt;br /&gt;
		return false;&lt;br /&gt;
	end&lt;br /&gt;
	for n,v in ipairs( haystack ) do&lt;br /&gt;
		if v == needle then&lt;br /&gt;
			return n;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S U B S T I T U T E &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Populates numbered arguments in a message string using an argument table.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function substitute( msg, args )&lt;br /&gt;
	return args and mw.message.newRawMessage( msg, args ):plain() or msg;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E R R O R _ C O M M E N T &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Wraps error messages with css markup according to the state of hidden.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
local function error_comment( content, hidden )&lt;br /&gt;
	return substitute( hidden and cfg.presentation[&#039;hidden-error&#039;] or cfg.presentation[&#039;visible-error&#039;], content );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S E T _ E R R O R &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Sets an error condition and returns the appropriate error message.  The actual placement of the error message in the output is&lt;br /&gt;
the responsibility of the calling function.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
local function set_error( error_id, arguments, raw, prefix, suffix )&lt;br /&gt;
	local error_state = cfg.error_conditions[ error_id ];&lt;br /&gt;
	&lt;br /&gt;
	prefix = prefix or &amp;quot;&amp;quot;;&lt;br /&gt;
	suffix = suffix or &amp;quot;&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	if error_state == nil then&lt;br /&gt;
		error( cfg.messages[&#039;undefined_error&#039;] );&lt;br /&gt;
	elseif is_set( error_state.category ) then&lt;br /&gt;
		table.insert( z.error_categories, error_state.category );&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local message = substitute( error_state.message, arguments );&lt;br /&gt;
	&lt;br /&gt;
	message = message .. &amp;quot; ([[&amp;quot; .. cfg.messages[&#039;help page link&#039;] .. &lt;br /&gt;
		&amp;quot;#&amp;quot; .. error_state.anchor .. &amp;quot;|&amp;quot; ..&lt;br /&gt;
		cfg.messages[&#039;help page label&#039;] .. &amp;quot;]])&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	z.error_ids[ error_id ] = true;&lt;br /&gt;
	if in_array( error_id, { &#039;bare_url_missing_title&#039;, &#039;trans_missing_title&#039; } )&lt;br /&gt;
			and z.error_ids[&#039;citation_missing_title&#039;] then&lt;br /&gt;
		return &#039;&#039;, false;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	message = table.concat({ prefix, message, suffix });&lt;br /&gt;
	&lt;br /&gt;
	if raw == true then&lt;br /&gt;
		return message, error_state.hidden;&lt;br /&gt;
	end		&lt;br /&gt;
		&lt;br /&gt;
	return error_comment( message, error_state.hidden );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A D D _ M A I N T _ C A T &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Adds a category to z.maintenance_cats using names from the configuration file with additional text if any.&lt;br /&gt;
To prevent duplication, the added_maint_cats table lists the categories by key that have been added to z.maintenance_cats.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local added_maint_cats = {}														-- list of maintenance categories that have been added to z.maintenance_cats&lt;br /&gt;
local function add_maint_cat (key, arguments)&lt;br /&gt;
	if not added_maint_cats [key] then&lt;br /&gt;
		added_maint_cats [key] = true;											-- note that we&#039;ve added this category&lt;br /&gt;
		table.insert( z.maintenance_cats, substitute (cfg.maint_cats [key], arguments));	-- make name then add to table&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A D D _ P R O P _ C A T &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Adds a category to z.properties_cats using names from the configuration file with additional text if any.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local added_prop_cats = {}														-- list of property categories that have been added to z.properties_cats&lt;br /&gt;
local function add_prop_cat (key, arguments)&lt;br /&gt;
	if not added_prop_cats [key] then&lt;br /&gt;
		added_prop_cats [key] = true;											-- note that we&#039;ve added this category&lt;br /&gt;
		table.insert( z.properties_cats, substitute (cfg.prop_cats [key], arguments));		-- make name then add to table&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A D D _ V A N C _ E R R O R &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Adds a single Vancouver system error message to the template&#039;s output regardless of how many error actually exist.&lt;br /&gt;
To prevent duplication, added_vanc_errs is nil until an error message is emitted.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local added_vanc_errs;															-- flag so we only emit one Vancouver error / category&lt;br /&gt;
local function add_vanc_error ()&lt;br /&gt;
	if not added_vanc_errs then&lt;br /&gt;
		added_vanc_errs = true;													-- note that we&#039;ve added this category&lt;br /&gt;
		table.insert( z.message_tail, { set_error( &#039;vancouver&#039;, {}, true ) } );&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ S C H E M E &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
does this thing that purports to be a uri scheme seem to be a valid scheme?  The scheme is checked to see if it&lt;br /&gt;
is in agreement with http://tools.ietf.org/html/std66#section-3.1 which says:&lt;br /&gt;
	Scheme names consist of a sequence of characters beginning with a&lt;br /&gt;
   letter and followed by any combination of letters, digits, plus&lt;br /&gt;
   (&amp;quot;+&amp;quot;), period (&amp;quot;.&amp;quot;), or hyphen (&amp;quot;-&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
returns true if it does, else false&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_scheme (scheme)&lt;br /&gt;
	return scheme and scheme:match (&#039;^%a[%a%d%+%.%-]*:&#039;);						-- true if scheme is set and matches the pattern&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; I S _ D O M A I N _ N A M E &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Does this thing that purports to be a domain name seem to be a valid domain name?&lt;br /&gt;
&lt;br /&gt;
Syntax defined here: http://tools.ietf.org/html/rfc1034#section-3.5&lt;br /&gt;
BNF defined here: https://tools.ietf.org/html/rfc4234&lt;br /&gt;
Single character names are generally reserved; see https://tools.ietf.org/html/draft-ietf-dnsind-iana-dns-01#page-15;&lt;br /&gt;
	see also [[Single-letter second-level domain]]&lt;br /&gt;
list of tlds: https://www.iana.org/domains/root/db&lt;br /&gt;
&lt;br /&gt;
rfc952 (modified by rfc 1123) requires the first and last character of a hostname to be a letter or a digit.  Between&lt;br /&gt;
the first and last characters the name may use letters, digits, and the hyphen.&lt;br /&gt;
&lt;br /&gt;
Also allowed are IPv4 addresses. IPv6 not supported&lt;br /&gt;
&lt;br /&gt;
domain is expected to be stripped of any path so that the last character in the last character of the tld.  tld&lt;br /&gt;
is two or more alpha characters.  Any preceding &#039;//&#039; (from splitting a url with a scheme) will be stripped&lt;br /&gt;
here.  Perhaps not necessary but retained incase it is necessary for IPv4 dot decimal.&lt;br /&gt;
&lt;br /&gt;
There are several tests:&lt;br /&gt;
	the first character of the whole domain name including subdomains must be a letter or a digit&lt;br /&gt;
	single-letter/digit second-level domains in the .org TLD&lt;br /&gt;
	q, x, and z SL domains in the .com TLD&lt;br /&gt;
	i and q SL domains in the .net TLD&lt;br /&gt;
	single-letter SL domains in the ccTLDs (where the ccTLD is two letters)&lt;br /&gt;
	two-character SL domains in gTLDs (where the gTLD is two or more letters)&lt;br /&gt;
	three-plus-character SL domains in gTLDs (where the gTLD is two or more letters)&lt;br /&gt;
	IPv4 dot-decimal address format; TLD not allowed&lt;br /&gt;
&lt;br /&gt;
returns true if domain appears to be a proper name and tld or IPv4 address, else false&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function is_domain_name (domain)&lt;br /&gt;
	if not domain then&lt;br /&gt;
		return false;															-- if not set, abandon&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	domain = domain:gsub (&#039;^//&#039;, &#039;&#039;);											-- strip &#039;//&#039; from domain name if present; done here so we only have to do it once&lt;br /&gt;
	&lt;br /&gt;
	if not domain:match (&#039;^[%a%d]&#039;) then										-- first character must be letter or digit&lt;br /&gt;
		return false;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if domain:match (&#039;%f[%a%d][%a%d]%.org$&#039;) then								-- one character .org hostname&lt;br /&gt;
		return true;&lt;br /&gt;
	elseif domain:match (&#039;%f[%a][qxz]%.com$&#039;) then								-- assigned one character .com hostname (x.com times out 2015-12-10)&lt;br /&gt;
		return true;&lt;br /&gt;
	elseif domain:match (&#039;%f[%a][iq]%.net$&#039;) then								-- assigned one character .net hostname (q.net registered but not active 2015-12-10)&lt;br /&gt;
		return true;&lt;br /&gt;
	elseif domain:match (&#039;%f[%a%d][%a%d]%.%a%a$&#039;) then							-- one character hostname and cctld (2 chars)&lt;br /&gt;
		return true;&lt;br /&gt;
	elseif domain:match (&#039;%f[%a%d][%a%d][%a%d]%.%a%a+$&#039;) then					-- two character hostname and tld&lt;br /&gt;
		return true;&lt;br /&gt;
	elseif domain:match (&#039;%f[%a%d][%a%d][%a%d%-]+[%a%d]%.%a%a+$&#039;) then			-- three or more character hostname.hostname or hostname.tld&lt;br /&gt;
		return true;&lt;br /&gt;
	elseif domain:match (&#039;^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?&#039;) then		-- IPv4 address&lt;br /&gt;
		return true;&lt;br /&gt;
	else&lt;br /&gt;
		return false;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ U R L &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns true if the scheme and domain parts of a url appear to be a valid url; else false.&lt;br /&gt;
&lt;br /&gt;
This function is the last step in the validation process.  This function is separate because there are cases that&lt;br /&gt;
are not covered by split_url(), for example is_parameter_ext_wikilink() which is looking for bracketted external&lt;br /&gt;
wikilinks.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_url (scheme, domain)&lt;br /&gt;
	if is_set (scheme) then														-- if scheme is set check it and domain&lt;br /&gt;
		return is_scheme (scheme) and is_domain_name (domain);&lt;br /&gt;
	else&lt;br /&gt;
		return is_domain_name (domain);											-- scheme not set when url is protocol relative&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S P L I T _ U R L &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Split a url into a scheme, authority indicator, and domain.&lt;br /&gt;
If protocol relative url, return nil scheme and domain else return nil for both scheme and domain.&lt;br /&gt;
&lt;br /&gt;
When not protocol relative, get scheme, authority indicator, and domain.  If there is an authority indicator (one&lt;br /&gt;
or more &#039;/&#039; characters following the scheme&#039;s colon), make sure that there are only 2.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function split_url (url_str)&lt;br /&gt;
	local scheme, authority, domain;&lt;br /&gt;
	&lt;br /&gt;
	url_str = url_str:gsub (&#039;([%a%d])%.?[/%?#].*$&#039;, &#039;%1&#039;);						-- strip FQDN terminator and path(/), query(?), fragment (#) (the capture prevents false replacement of &#039;//&#039;)&lt;br /&gt;
&lt;br /&gt;
	if url_str:match (&#039;^//%S*&#039;) then											-- if there is what appears to be a protocol relative url&lt;br /&gt;
		domain = url_str:match (&#039;^//(%S*)&#039;)&lt;br /&gt;
	elseif url_str:match (&#039;%S-:/*%S+&#039;) then										-- if there is what appears to be a scheme, optional authority indicator, and domain name&lt;br /&gt;
		scheme, authority, domain = url_str:match (&#039;(%S-:)(/*)(%S+)&#039;);			-- extract the scheme, authority indicator, and domain portions&lt;br /&gt;
		authority = authority:gsub (&#039;//&#039;, &#039;&#039;, 1);								-- replace place 1 pair of &#039;/&#039; with nothing;&lt;br /&gt;
		if is_set(authority) then												-- if anything left (1 or 3+ &#039;/&#039; where authority should be) then&lt;br /&gt;
			return scheme;														-- return scheme only making domain nil which will cause an error message&lt;br /&gt;
		end&lt;br /&gt;
		domain = domain:gsub (&#039;(%a):%d+&#039;, &#039;%1&#039;);								-- strip port number if present&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return scheme, domain;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L I N K _ P A R A M _ O K &amp;gt;---------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
checks the content of |title-link=, |series-link=, |author-link= etc for properly formatted content: no wikilinks, no urls&lt;br /&gt;
&lt;br /&gt;
Link parameters are to hold the title of a wikipedia article so none of the WP:TITLESPECIALCHARACTERS are allowed:&lt;br /&gt;
	# &amp;lt; &amp;gt; [ ] | { } _&lt;br /&gt;
except the underscore which is used as a space in wiki urls and # which is used for section links&lt;br /&gt;
&lt;br /&gt;
returns false when the value contains any of these characters.&lt;br /&gt;
&lt;br /&gt;
When there are no illegal characters, this function returns TRUE if value DOES NOT appear to be a valid url (the&lt;br /&gt;
|&amp;lt;param&amp;gt;-link= parameter is ok); else false when value appears to be a valid url (the |&amp;lt;param&amp;gt;-link= parameter is NOT ok).&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function link_param_ok (value)&lt;br /&gt;
	local scheme, domain;&lt;br /&gt;
	if value:find (&#039;[&amp;lt;&amp;gt;%[%]|{}]&#039;) then											-- if any prohibited characters&lt;br /&gt;
		return false;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	scheme, domain = split_url (value);											-- get scheme or nil and domain or nil from url; &lt;br /&gt;
	return not is_url (scheme, domain);											-- return true if value DOES NOT appear to be a valid url&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C H E C K _ U R L &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Determines whether a URL string appears to be valid.&lt;br /&gt;
&lt;br /&gt;
First we test for space characters.  If any are found, return false.  Then split the url into scheme and domain&lt;br /&gt;
portions, or for protocol relative (//example.com) urls, just the domain.  Use is_url() to validate the two&lt;br /&gt;
portions of the url.  If both are valid, or for protocol relative if domain is valid, return true, else false.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function check_url( url_str )&lt;br /&gt;
	if nil == url_str:match (&amp;quot;^%S+$&amp;quot;) then										-- if there are any spaces in |url=value it can&#039;t be a proper url&lt;br /&gt;
		return false;&lt;br /&gt;
	end&lt;br /&gt;
	local scheme, domain;&lt;br /&gt;
&lt;br /&gt;
	scheme, domain = split_url (url_str);										-- get scheme or nil and domain or nil from url; &lt;br /&gt;
	return is_url (scheme, domain);												-- return true if value appears to be a valid url&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; I S _ P A R A M E T E R _ E X T _ W I K I L I N K &amp;gt;----------------------------&lt;br /&gt;
&lt;br /&gt;
Return true if a parameter value has a string that begins and ends with square brackets [ and ] and the first&lt;br /&gt;
non-space characters following the opening bracket appear to be a url.  The test will also find external wikilinks&lt;br /&gt;
that use protocol relative urls. Also finds bare urls.&lt;br /&gt;
&lt;br /&gt;
The frontier pattern prevents a match on interwiki links which are similar to scheme:path urls.  The tests that&lt;br /&gt;
find bracketed urls are required because the parameters that call this test (currently |title=, |chapter=, |work=,&lt;br /&gt;
and |publisher=) may have wikilinks and there are articles or redirects like &#039;//Hus&#039; so, while uncommon, |title=[[//Hus]]&lt;br /&gt;
is possible as might be [[en://Hus]].&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function is_parameter_ext_wikilink (value)&lt;br /&gt;
local scheme, domain;&lt;br /&gt;
&lt;br /&gt;
	value = value:gsub (&#039;([^%s/])/[%a%d].*&#039;, &#039;%1&#039;);								-- strip path information (the capture prevents false replacement of &#039;//&#039;)&lt;br /&gt;
&lt;br /&gt;
	if value:match (&#039;%f[%[]%[%a%S*:%S+.*%]&#039;) then								-- if ext wikilink with scheme and domain: [xxxx://yyyyy.zzz]&lt;br /&gt;
		scheme, domain = value:match (&#039;%f[%[]%[(%a%S*:)(%S+).*%]&#039;)&lt;br /&gt;
	elseif value:match (&#039;%f[%[]%[//%S*%.%S+.*%]&#039;) then							-- if protocol relative ext wikilink: [//yyyyy.zzz]&lt;br /&gt;
		domain = value:match (&#039;%f[%[]%[//(%S*%.%S+).*%]&#039;);&lt;br /&gt;
	elseif value:match (&#039;%a%S*:%S+&#039;) then										-- if bare url with scheme; may have leading or trailing plain text&lt;br /&gt;
		scheme, domain = value:match (&#039;(%a%S*:)(%S+)&#039;);&lt;br /&gt;
	elseif value:match (&#039;//%S*%.%S+&#039;) then										-- if protocol relative bare url: //yyyyy.zzz; may have leading or trailing plain text&lt;br /&gt;
		domain = value:match (&#039;//(%S*%.%S+)&#039;);									-- what is left should be the domain&lt;br /&gt;
	else&lt;br /&gt;
		return false;															-- didn&#039;t find anything that is obviously a url&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return is_url (scheme, domain);												-- return true if value appears to be a valid url&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[-------------------------&amp;lt; C H E C K _ F O R _ U R L &amp;gt;-----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
loop through a list of parameters and their values.  Look at the value and if it has an external link, emit an error message.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function check_for_url (parameter_list)&lt;br /&gt;
local error_message = &#039;&#039;;&lt;br /&gt;
	for k, v in pairs (parameter_list) do										-- for each parameter in the list&lt;br /&gt;
		if is_parameter_ext_wikilink (v) then									-- look at the value; if there is a url add an error message&lt;br /&gt;
			if is_set(error_message) then										-- once we&#039;ve added the first portion of the error message ...&lt;br /&gt;
				error_message=error_message .. &amp;quot;, &amp;quot;;							-- ... add a comma space separator&lt;br /&gt;
			end&lt;br /&gt;
			error_message=error_message .. &amp;quot;&amp;amp;#124;&amp;quot; .. k .. &amp;quot;=&amp;quot;;				-- add the failed parameter&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if is_set (error_message) then												-- done looping, if there is an error message, display it&lt;br /&gt;
		table.insert( z.message_tail, { set_error( &#039;param_has_ext_link&#039;, {error_message}, true ) } );&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S A F E _ F O R _ I T A L I C S &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Protects a string that will be wrapped in wiki italic markup &#039;&#039; ... &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note: We cannot use &amp;lt;i&amp;gt; for italics, as the expected behavior for italics specified by &#039;&#039;...&#039;&#039; in the title is that&lt;br /&gt;
they will be inverted (i.e. unitalicized) in the resulting references.  In addition, &amp;lt;i&amp;gt; and &#039;&#039; tend to interact&lt;br /&gt;
poorly under Mediawiki&#039;s HTML tidy.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function safe_for_italics( str )&lt;br /&gt;
	if not is_set(str) then&lt;br /&gt;
		return str;&lt;br /&gt;
	else&lt;br /&gt;
		if str:sub(1,1) == &amp;quot;&#039;&amp;quot; then str = &amp;quot;&amp;lt;span /&amp;gt;&amp;quot; .. str; end&lt;br /&gt;
		if str:sub(-1,-1) == &amp;quot;&#039;&amp;quot; then str = str .. &amp;quot;&amp;lt;span /&amp;gt;&amp;quot;; end&lt;br /&gt;
		&lt;br /&gt;
		-- Remove newlines as they break italics.&lt;br /&gt;
		return str:gsub( &#039;\n&#039;, &#039; &#039; );&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S A F E _ F O R _ U R L &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Escape sequences for content that will be used for URL descriptions&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function safe_for_url( str )&lt;br /&gt;
	if str:match( &amp;quot;%[%[.-%]%]&amp;quot; ) ~= nil then &lt;br /&gt;
		table.insert( z.message_tail, { set_error( &#039;wikilink_in_url&#039;, {}, true ) } );&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return str:gsub( &#039;[%[%]\n]&#039;, {	&lt;br /&gt;
		[&#039;[&#039;] = &#039;&amp;amp;#91;&#039;,&lt;br /&gt;
		[&#039;]&#039;] = &#039;&amp;amp;#93;&#039;,&lt;br /&gt;
		[&#039;\n&#039;] = &#039; &#039; } );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; W R A P _ S T Y L E &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Applies styling to various parameters.  Supplied string is wrapped using a message_list configuration taking one&lt;br /&gt;
argument; protects italic styled parameters.  Additional text taken from citation_config.presentation - the reason&lt;br /&gt;
this function is similar to but separate from wrap_msg().&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function wrap_style (key, str)&lt;br /&gt;
	if not is_set( str ) then&lt;br /&gt;
		return &amp;quot;&amp;quot;;&lt;br /&gt;
	elseif in_array( key, { &#039;italic-title&#039;, &#039;trans-italic-title&#039; } ) then&lt;br /&gt;
		str = safe_for_italics( str );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return substitute( cfg.presentation[key], {str} );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X T E R N A L _ L I N K &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Format an external link with error checking&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function external_link( URL, label, source )&lt;br /&gt;
	local error_str = &amp;quot;&amp;quot;;&lt;br /&gt;
	if not is_set( label ) then&lt;br /&gt;
		label = URL;&lt;br /&gt;
		if is_set( source ) then&lt;br /&gt;
			error_str = set_error( &#039;bare_url_missing_title&#039;, { wrap_style (&#039;parameter&#039;, source) }, false, &amp;quot; &amp;quot; );&lt;br /&gt;
		else&lt;br /&gt;
			error( cfg.messages[&amp;quot;bare_url_no_origin&amp;quot;] );&lt;br /&gt;
		end			&lt;br /&gt;
	end&lt;br /&gt;
	if not check_url( URL ) then&lt;br /&gt;
		error_str = set_error( &#039;bad_url&#039;, {wrap_style (&#039;parameter&#039;, source)}, false, &amp;quot; &amp;quot; ) .. error_str;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat({ &amp;quot;[&amp;quot;, URL, &amp;quot; &amp;quot;, safe_for_url( label ), &amp;quot;]&amp;quot;, error_str });&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X T E R N A L _ L I N K _ I D &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Formats a wiki style external link&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function external_link_id(options)&lt;br /&gt;
	local url_string = options.id;&lt;br /&gt;
	if options.encode == true or options.encode == nil then&lt;br /&gt;
		url_string = mw.uri.encode( url_string );&lt;br /&gt;
	end&lt;br /&gt;
	return mw.ustring.format( &#039;[[%s|%s]]%s[%s%s%s %s]&#039;,&lt;br /&gt;
		options.link, options.label, options.separator or &amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
		options.prefix, url_string, options.suffix or &amp;quot;&amp;quot;,&lt;br /&gt;
		mw.text.nowiki(options.id)&lt;br /&gt;
	);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; D E P R E C A T E D _ P A R A M E T E R &amp;gt;--------------------------------------&lt;br /&gt;
&lt;br /&gt;
Categorize and emit an error message when the citation contains one or more deprecated parameters.  The function includes the&lt;br /&gt;
offending parameter name to the error message.  Only one error message is emitted regardless of the number of deprecated&lt;br /&gt;
parameters in the citation.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local page_in_deprecated_cat;													-- sticky flag so that the category is added only once&lt;br /&gt;
local function deprecated_parameter(name)&lt;br /&gt;
	if not page_in_deprecated_cat then&lt;br /&gt;
		page_in_deprecated_cat = true;											-- note that we&#039;ve added this category&lt;br /&gt;
		table.insert( z.message_tail, { set_error( &#039;deprecated_params&#039;, {name}, true ) } );		-- add error message&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; K E R N _ Q U O T E S &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Apply kerning to open the space between the quote mark provided by the Module and a leading or trailing quote mark contained in a |title= or |chapter= parameter&#039;s value.&lt;br /&gt;
This function will positive kern either single or double quotes:&lt;br /&gt;
	&amp;quot;&#039;Unkerned title with leading and trailing single quote marks&#039;&amp;quot;&lt;br /&gt;
	&amp;quot; &#039;Kerned title with leading and trailing single quote marks&#039; &amp;quot; (in real life the kerning isn&#039;t as wide as this example)&lt;br /&gt;
Double single quotes (italic or bold wikimarkup) are not kerned.&lt;br /&gt;
&lt;br /&gt;
Call this function for chapter titles, for website titles, etc; not for book titles.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function kern_quotes (str)&lt;br /&gt;
	local cap=&#039;&#039;;&lt;br /&gt;
	local cap2=&#039;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	cap, cap2 = str:match (&amp;quot;^([\&amp;quot;\&#039;])([^\&#039;].+)&amp;quot;);								-- match leading double or single quote but not double single quotes&lt;br /&gt;
	if is_set (cap) then&lt;br /&gt;
		str = substitute (cfg.presentation[&#039;kern-left&#039;], {cap, cap2});&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cap, cap2 = str:match (&amp;quot;^(.+[^\&#039;])([\&amp;quot;\&#039;])$&amp;quot;)&lt;br /&gt;
	if is_set (cap) then&lt;br /&gt;
		str = substitute (cfg.presentation[&#039;kern-right&#039;], {cap, cap2});&lt;br /&gt;
	end&lt;br /&gt;
	return str;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; F O R M A T _ S C R I P T _ V A L U E &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
|script-title= holds title parameters that are not written in Latin based scripts: Chinese, Japanese, Arabic, Hebrew, etc. These scripts should&lt;br /&gt;
not be italicized and may be written right-to-left.  The value supplied by |script-title= is concatenated onto Title after Title has been wrapped&lt;br /&gt;
in italic markup.&lt;br /&gt;
&lt;br /&gt;
Regardless of language, all values provided by |script-title= are wrapped in &amp;lt;bdi&amp;gt;...&amp;lt;/bdi&amp;gt; tags to isolate rtl languages from the English left to right.&lt;br /&gt;
&lt;br /&gt;
|script-title= provides a unique feature.  The value in |script-title= may be prefixed with a two-character ISO639-1 language code and a colon:&lt;br /&gt;
	|script-title=ja:*** *** (where * represents a Japanese character)&lt;br /&gt;
Spaces between the two-character code and the colon and the colon and the first script character are allowed:&lt;br /&gt;
	|script-title=ja : *** ***&lt;br /&gt;
	|script-title=ja: *** ***&lt;br /&gt;
	|script-title=ja :*** ***&lt;br /&gt;
Spaces preceding the prefix are allowed: |script-title = ja:*** ***&lt;br /&gt;
&lt;br /&gt;
The prefix is checked for validity.  If it is a valid ISO639-1 language code, the lang attribute (lang=&amp;quot;ja&amp;quot;) is added to the &amp;lt;bdi&amp;gt; tag so that browsers can&lt;br /&gt;
know the language the tag contains.  This may help the browser render the script more correctly.  If the prefix is invalid, the lang attribute&lt;br /&gt;
is not added.  At this time there is no error message for this condition.&lt;br /&gt;
&lt;br /&gt;
Supports |script-title= and |script-chapter=&lt;br /&gt;
&lt;br /&gt;
TODO: error messages when prefix is invalid ISO639-1 code; when script_value has prefix but no script;&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function format_script_value (script_value)&lt;br /&gt;
	local lang=&#039;&#039;;																-- initialize to empty string&lt;br /&gt;
	local name;&lt;br /&gt;
	if script_value:match(&#039;^%l%l%s*:&#039;) then										-- if first 3 non-space characters are script language prefix&lt;br /&gt;
		lang = script_value:match(&#039;^(%l%l)%s*:%s*%S.*&#039;);						-- get the language prefix or nil if there is no script&lt;br /&gt;
		if not is_set (lang) then&lt;br /&gt;
			return &#039;&#039;;															-- script_value was just the prefix so return empty string&lt;br /&gt;
		end&lt;br /&gt;
																				-- if we get this far we have prefix and script&lt;br /&gt;
		name = mw.language.fetchLanguageName( lang, mw.getContentLanguage():getCode() );						-- get language name so that we can use it to categorize&lt;br /&gt;
		if is_set (name) then													-- is prefix a proper ISO 639-1 language code?&lt;br /&gt;
			script_value = script_value:gsub (&#039;^%l%l%s*:%s*&#039;, &#039;&#039;);				-- strip prefix from script&lt;br /&gt;
																				-- is prefix one of these language codes?&lt;br /&gt;
			if in_array (lang, {&#039;ar&#039;, &#039;bg&#039;, &#039;bs&#039;, &#039;dv&#039;, &#039;el&#039;, &#039;fa&#039;, &#039;he&#039;, &#039;hy&#039;, &#039;ja&#039;, &#039;ka&#039;, &#039;ko&#039;, &#039;ku&#039;, &#039;mk&#039;, &#039;ps&#039;, &#039;ru&#039;, &#039;sd&#039;, &#039;sr&#039;, &#039;th&#039;, &#039;uk&#039;, &#039;ug&#039;, &#039;yi&#039;, &#039;zh&#039;}) then&lt;br /&gt;
				add_prop_cat (&#039;script_with_name&#039;, {name, lang})&lt;br /&gt;
			else&lt;br /&gt;
				add_prop_cat (&#039;script&#039;)&lt;br /&gt;
			end&lt;br /&gt;
			lang = &#039; lang=&amp;quot;&#039; .. lang .. &#039;&amp;quot; &#039;;									-- convert prefix into a lang attribute&lt;br /&gt;
		else&lt;br /&gt;
			lang = &#039;&#039;;															-- invalid so set lang to empty string&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if is_set(script_value) then&lt;br /&gt;
		script_value = &#039;-{R|&#039; .. script_value .. &#039;}-&#039;;&lt;br /&gt;
	end&lt;br /&gt;
	script_value = substitute (cfg.presentation[&#039;bdi&#039;], {lang, script_value});	-- isolate in case script is rtl&lt;br /&gt;
&lt;br /&gt;
	return script_value;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S C R I P T _ C O N C A T E N A T E &amp;gt;------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Initially for |title= and |script-title=, this function concatenates those two parameter values after the script value has been &lt;br /&gt;
wrapped in &amp;lt;bdi&amp;gt; tags.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function script_concatenate (title, script)&lt;br /&gt;
	if is_set(title) then&lt;br /&gt;
		title = &#039;-{zh;zh-hans;zh-hant|&#039; .. title .. &#039;}-&#039;;&lt;br /&gt;
	end&lt;br /&gt;
	if is_set (script) then&lt;br /&gt;
		script = format_script_value (script);									-- &amp;lt;bdi&amp;gt; tags, lang atribute, categorization, etc; returns empty string on error&lt;br /&gt;
		if is_set (script) then&lt;br /&gt;
			title = title .. &#039; &#039; .. script;										-- concatenate title and script title&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return title;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; W R A P _ M S G &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Applies additional message text to various parameter values. Supplied string is wrapped using a message_list&lt;br /&gt;
configuration taking one argument.  Supports lower case text for {{citation}} templates.  Additional text taken&lt;br /&gt;
from citation_config.messages - the reason this function is similar to but separate from wrap_style().&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function wrap_msg (key, str, lower)&lt;br /&gt;
	if not is_set( str ) then&lt;br /&gt;
		return &amp;quot;&amp;quot;;&lt;br /&gt;
	end&lt;br /&gt;
	if true == lower then&lt;br /&gt;
		local msg;&lt;br /&gt;
		msg = cfg.messages[key]:lower();										-- set the message to lower case before &lt;br /&gt;
		return substitute( msg, str );										-- including template text&lt;br /&gt;
	else&lt;br /&gt;
		return substitute( cfg.messages[key], str );&lt;br /&gt;
	end		&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[-------------------------&amp;lt; I S _ A L I A S _ U S E D &amp;gt;-----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This function is used by select_one() to determine if one of a list of alias parameters is in the argument list&lt;br /&gt;
provided by the template.&lt;br /&gt;
&lt;br /&gt;
Input:&lt;br /&gt;
	args – pointer to the arguments table from calling template&lt;br /&gt;
	alias – one of the list of possible aliases in the aliases lists from Module:Citation/CS1/Configuration&lt;br /&gt;
	index – for enumerated parameters, identifies which one&lt;br /&gt;
	enumerated – true/false flag used choose how enumerated aliases are examined&lt;br /&gt;
	value – value associated with an alias that has previously been selected; nil if not yet selected&lt;br /&gt;
	selected – the alias that has previously been selected; nil if not yet selected&lt;br /&gt;
	error_list – list of aliases that are duplicates of the alias already selected&lt;br /&gt;
&lt;br /&gt;
Returns:&lt;br /&gt;
	value – value associated with alias we selected or that was previously selected or nil if an alias not yet selected&lt;br /&gt;
	selected – the alias we selected or the alias that was previously selected or nil if an alias not yet selected&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_alias_used (args, alias, index, enumerated, value, selected, error_list)&lt;br /&gt;
	if enumerated then															-- is this a test for an enumerated parameters?&lt;br /&gt;
		alias = alias:gsub (&#039;#&#039;, index);										-- replace &#039;#&#039; with the value in index&lt;br /&gt;
	else&lt;br /&gt;
		alias = alias:gsub (&#039;#&#039;, &#039;&#039;);											-- remove &#039;#&#039; if it exists&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set(args[alias]) then													-- alias is in the template&#039;s argument list&lt;br /&gt;
		if value ~= nil and selected ~= alias then								-- if we have already selected one of the aliases&lt;br /&gt;
			local skip;&lt;br /&gt;
			for _, v in ipairs(error_list) do									-- spin through the error list to see if we&#039;ve added this alias&lt;br /&gt;
				if v == alias then&lt;br /&gt;
					skip = true;&lt;br /&gt;
					break;														-- has been added so stop looking &lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if not skip then													-- has not been added so&lt;br /&gt;
				table.insert( error_list, alias );								-- add error alias to the error list&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			value = args[alias];												-- not yet selected an alias, so select this one&lt;br /&gt;
			selected = alias;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return value, selected;														-- return newly selected alias, or previously selected alias&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S E L E C T _ O N E &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Chooses one matching parameter from a list of parameters to consider.  The list of parameters to consider is just&lt;br /&gt;
names.  For parameters that may be enumerated, the position of the numerator in the parameter name is identified&lt;br /&gt;
by the &#039;#&#039; so |author-last1= and |author1-last= are represented as &#039;author-last#&#039; and &#039;author#-last&#039;.&lt;br /&gt;
&lt;br /&gt;
Because enumerated parameter |&amp;lt;param&amp;gt;1= is an alias of |&amp;lt;param&amp;gt;= we must test for both possibilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generates an error if more than one match is present.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function select_one( args, aliases_list, error_condition, index )&lt;br /&gt;
	local value = nil;															-- the value assigned to the selected parameter&lt;br /&gt;
	local selected = &#039;&#039;;														-- the name of the parameter we have chosen&lt;br /&gt;
	local error_list = {};&lt;br /&gt;
&lt;br /&gt;
	if index ~= nil then index = tostring(index); end&lt;br /&gt;
&lt;br /&gt;
	for _, alias in ipairs( aliases_list ) do									-- for each alias in the aliases list&lt;br /&gt;
		if alias:match (&#039;#&#039;) then												-- if this alias can be enumerated&lt;br /&gt;
			if &#039;1&#039; == index then												-- when index is 1 test for enumerated and non-enumerated aliases&lt;br /&gt;
				value, selected = is_alias_used (args, alias, index, false, value, selected, error_list);	-- first test for non-enumerated alias&lt;br /&gt;
			end&lt;br /&gt;
			value, selected = is_alias_used (args, alias, index, true, value, selected, error_list);		-- test for enumerated alias&lt;br /&gt;
		else&lt;br /&gt;
			value, selected = is_alias_used (args, alias, index, false, value, selected, error_list);		--test for non-enumerated alias&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #error_list &amp;gt; 0 and &#039;none&#039; ~= error_condition then						-- for cases where this code is used outside of extract_names()&lt;br /&gt;
		local error_str = &amp;quot;&amp;quot;;&lt;br /&gt;
		for _, k in ipairs( error_list ) do&lt;br /&gt;
			if error_str ~= &amp;quot;&amp;quot; then error_str = error_str .. cfg.messages[&#039;parameter-separator&#039;] end&lt;br /&gt;
			error_str = error_str .. wrap_style (&#039;parameter&#039;, k);&lt;br /&gt;
		end&lt;br /&gt;
		if #error_list &amp;gt; 1 then&lt;br /&gt;
			error_str = error_str .. cfg.messages[&#039;parameter-final-separator&#039;];&lt;br /&gt;
		else&lt;br /&gt;
			error_str = error_str .. cfg.messages[&#039;parameter-pair-separator&#039;];&lt;br /&gt;
		end&lt;br /&gt;
		error_str = error_str .. wrap_style (&#039;parameter&#039;, selected);&lt;br /&gt;
		table.insert( z.message_tail, { set_error( error_condition, {error_str}, true ) } );&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return value, selected;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; F O R M A T _ C H A P T E R _ T I T L E &amp;gt;--------------------------------------&lt;br /&gt;
&lt;br /&gt;
Format the four chapter parameters: |script-chapter=, |chapter=, |trans-chapter=, and |chapter-url= into a single Chapter meta-&lt;br /&gt;
parameter (chapter_url_source used for error messages).&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function format_chapter_title (scriptchapter, chapter, transchapter, chapterurl, chapter_url_source, no_quotes)&lt;br /&gt;
	local chapter_error = &#039;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	if not is_set (chapter) then&lt;br /&gt;
		chapter = &#039;&#039;;															-- to be safe for concatenation&lt;br /&gt;
	else&lt;br /&gt;
		if false == no_quotes then&lt;br /&gt;
			chapter = kern_quotes (chapter);										-- if necessary, separate chapter title&#039;s leading and trailing quote marks from Module provided quote marks&lt;br /&gt;
			chapter = wrap_style (&#039;quoted-title&#039;, chapter);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	chapter = script_concatenate (chapter, scriptchapter)						-- &amp;lt;bdi&amp;gt; tags, lang atribute, categorization, etc; must be done after title is wrapped&lt;br /&gt;
&lt;br /&gt;
	if is_set (transchapter) then&lt;br /&gt;
		transchapter = wrap_style (&#039;trans-quoted-title&#039;, transchapter);&lt;br /&gt;
		if is_set (chapter) then&lt;br /&gt;
			chapter = chapter ..  &#039; &#039; .. transchapter;&lt;br /&gt;
		else																	-- here when transchapter without chapter or script-chapter&lt;br /&gt;
			chapter = transchapter;												-- &lt;br /&gt;
			chapter_error = &#039; &#039; .. set_error (&#039;trans_missing_title&#039;, {&#039;chapter&#039;});&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (chapterurl) then&lt;br /&gt;
		chapter = external_link (chapterurl, chapter, chapter_url_source);		-- adds bare_url_missing_title error if appropriate&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return chapter .. chapter_error;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H A S _ I N V I S I B L E _ C H A R S &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
This function searches a parameter&#039;s value for nonprintable or invisible characters.  The search stops at the&lt;br /&gt;
first match.&lt;br /&gt;
&lt;br /&gt;
This function will detect the visible replacement character when it is part of the wikisource.&lt;br /&gt;
&lt;br /&gt;
Detects but ignores nowiki and math stripmarkers.  Also detects other named stripmarkers (gallery, math, pre, ref)&lt;br /&gt;
and identifies them with a slightly different error message.  See also coins_cleanup().&lt;br /&gt;
&lt;br /&gt;
Detects but ignores the character pattern that results from the transclusion of {{&#039;}} templates.&lt;br /&gt;
&lt;br /&gt;
Output of this function is an error message that identifies the character or the Unicode group, or the stripmarker&lt;br /&gt;
that was detected along with its position (or, for multi-byte characters, the position of its first byte) in the&lt;br /&gt;
parameter value.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function has_invisible_chars (param, v)&lt;br /&gt;
	local position = &#039;&#039;;														-- position of invisible char or starting position of stripmarker&lt;br /&gt;
	local dummy;																-- end of matching string; not used but required to hold end position when a capture is returned&lt;br /&gt;
	local capture;																-- used by stripmarker detection to hold name of the stripmarker&lt;br /&gt;
	local i=1;&lt;br /&gt;
	local stripmarker, apostrophe;&lt;br /&gt;
&lt;br /&gt;
	while cfg.invisible_chars[i] do&lt;br /&gt;
		local char=cfg.invisible_chars[i][1]									-- the character or group name&lt;br /&gt;
		local pattern=cfg.invisible_chars[i][2]									-- the pattern used to find it&lt;br /&gt;
		position, dummy, capture = mw.ustring.find (v, pattern)					-- see if the parameter value contains characters that match the pattern&lt;br /&gt;
		&lt;br /&gt;
		if position then&lt;br /&gt;
--			if &#039;nowiki&#039; == capture or &#039;math&#039; == capture or (&#039;ref&#039; == capture and &#039;quote&#039; == param) then 	-- nowiki, math, or quote param and ref stripmarker (not an error condition)&lt;br /&gt;
			if &#039;nowiki&#039; == capture or &#039;math&#039; == capture then 					-- nowiki, math stripmarker (not an error condition)&lt;br /&gt;
				stripmarker = true;												-- set a flag&lt;br /&gt;
			elseif true == stripmarker and &#039;delete&#039; == char then				-- because stripmakers begin and end with the delete char, assume that we&#039;ve found one end of a stripmarker&lt;br /&gt;
				position = nil;													-- unset&lt;br /&gt;
			elseif &#039;apostrophe&#039; == char then									-- apostrophe template uses &amp;amp;zwj;, hair space and zero-width space&lt;br /&gt;
				apostrophe = true;&lt;br /&gt;
			elseif true == apostrophe and in_array (char, {&#039;zero width joiner&#039;, &#039;zero width space&#039;, &#039;hair space&#039;}) then&lt;br /&gt;
				position = nil;													-- unset&lt;br /&gt;
			else&lt;br /&gt;
				local err_msg;&lt;br /&gt;
				if capture then&lt;br /&gt;
					err_msg = capture .. &#039; &#039; .. char;&lt;br /&gt;
				else&lt;br /&gt;
					err_msg = char .. &#039; &#039; .. &#039;character&#039;;&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;invisible_char&#039;, {err_msg, wrap_style (&#039;parameter&#039;, param), position}, true ) } );	-- add error message&lt;br /&gt;
				return;															-- and done with this parameter&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		i=i+1;																	-- bump our index&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R G U M E N T _ W R A P P E R &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Argument wrapper.  This function provides support for argument mapping defined in the configuration file so that&lt;br /&gt;
multiple names can be transparently aliased to single internal variable.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function argument_wrapper( args )&lt;br /&gt;
	local origin = {};&lt;br /&gt;
	&lt;br /&gt;
	return setmetatable({&lt;br /&gt;
		ORIGIN = function( self, k )&lt;br /&gt;
			local dummy = self[k]; --force the variable to be loaded.&lt;br /&gt;
			return origin[k];&lt;br /&gt;
		end&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		__index = function ( tbl, k )&lt;br /&gt;
			if origin[k] ~= nil then&lt;br /&gt;
				return nil;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local args, list, v = args, cfg.aliases[k];&lt;br /&gt;
			&lt;br /&gt;
			if type( list ) == &#039;table&#039; then&lt;br /&gt;
				v, origin[k] = select_one( args, list, &#039;redundant_parameters&#039; );&lt;br /&gt;
				if origin[k] == nil then&lt;br /&gt;
					origin[k] = &#039;&#039;; -- Empty string, not nil&lt;br /&gt;
				end&lt;br /&gt;
			elseif list ~= nil then&lt;br /&gt;
				v, origin[k] = args[list], list;&lt;br /&gt;
			else&lt;br /&gt;
				-- maybe let through instead of raising an error?&lt;br /&gt;
				-- v, origin[k] = args[k], k;&lt;br /&gt;
				error( cfg.messages[&#039;unknown_argument_map&#039;] );&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			-- Empty strings, not nil;&lt;br /&gt;
			if v == nil then&lt;br /&gt;
				v = cfg.defaults[k] or &#039;&#039;;&lt;br /&gt;
				origin[k] = &#039;&#039;;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			tbl = rawset( tbl, k, v );&lt;br /&gt;
			return v;&lt;br /&gt;
		end,&lt;br /&gt;
	});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; V A L I D A T E &amp;gt;--------------------------------------------------------------&lt;br /&gt;
Looks for a parameter&#039;s name in the whitelist.&lt;br /&gt;
&lt;br /&gt;
Parameters in the whitelist can have three values:&lt;br /&gt;
	true - active, supported parameters&lt;br /&gt;
	false - deprecated, supported parameters&lt;br /&gt;
	nil - unsupported parameters&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function validate( name )&lt;br /&gt;
	local name = tostring( name );&lt;br /&gt;
	local state = whitelist.basic_arguments[ name ];&lt;br /&gt;
	&lt;br /&gt;
	-- Normal arguments&lt;br /&gt;
	if true == state then return true; end		-- valid actively supported parameter&lt;br /&gt;
	if false == state then&lt;br /&gt;
		deprecated_parameter (name);				-- parameter is deprecated but still supported&lt;br /&gt;
		return true;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Arguments with numbers in them&lt;br /&gt;
	name = name:gsub( &amp;quot;%d+&amp;quot;, &amp;quot;#&amp;quot; );				-- replace digit(s) with # (last25 becomes last#&lt;br /&gt;
	state = whitelist.numbered_arguments[ name ];&lt;br /&gt;
	if true == state then return true; end		-- valid actively supported parameter&lt;br /&gt;
	if false == state then&lt;br /&gt;
		deprecated_parameter (name);				-- parameter is deprecated but still supported&lt;br /&gt;
		return true;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false;								-- Not supported because not found or name is set to nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Formats a wiki style internal link&lt;br /&gt;
local function internal_link_id(options)&lt;br /&gt;
	return mw.ustring.format( &#039;[[%s|%s]]%s[[%s%s%s|%s]]&#039;,&lt;br /&gt;
		options.link, options.label, options.separator or &amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
		options.prefix, options.id, options.suffix or &amp;quot;&amp;quot;,&lt;br /&gt;
		mw.text.nowiki(options.id)&lt;br /&gt;
	);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; N O W R A P _ D A T E &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
When date is YYYY-MM-DD format wrap in nowrap span: &amp;lt;span ...&amp;gt;YYYY-MM-DD&amp;lt;/span&amp;gt;.  When date is DD MMMM YYYY or is&lt;br /&gt;
MMMM DD, YYYY then wrap in nowrap span: &amp;lt;span ...&amp;gt;DD MMMM&amp;lt;/span&amp;gt; YYYY or &amp;lt;span ...&amp;gt;MMMM DD,&amp;lt;/span&amp;gt; YYYY&lt;br /&gt;
&lt;br /&gt;
DOES NOT yet support MMMM YYYY or any of the date ranges.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function nowrap_date (date)&lt;br /&gt;
	local cap=&#039;&#039;;&lt;br /&gt;
	local cap2=&#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	if date:match(&amp;quot;^%d%d%d%d%-%d%d%-%d%d$&amp;quot;) then&lt;br /&gt;
		date = substitute (cfg.presentation[&#039;nowrap1&#039;], date);&lt;br /&gt;
	&lt;br /&gt;
	elseif date:match(&amp;quot;^%a+%s*%d%d?,%s+%d%d%d%d$&amp;quot;) or date:match (&amp;quot;^%d%d?%s*%a+%s+%d%d%d%d$&amp;quot;) then&lt;br /&gt;
		cap, cap2 = string.match (date, &amp;quot;^(.*)%s+(%d%d%d%d)$&amp;quot;);&lt;br /&gt;
		date = substitute (cfg.presentation[&#039;nowrap2&#039;], {cap, cap2});&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return date;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; IS _ V A L I D _ I S X N &amp;gt;-----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
ISBN-10 and ISSN validator code calculates checksum across all isbn/issn digits including the check digit. ISBN-13 is checked in check_isbn().&lt;br /&gt;
If the number is valid the result will be 0. Before calling this function, issbn/issn must be checked for length and stripped of dashes,&lt;br /&gt;
spaces and other non-isxn characters.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_valid_isxn (isxn_str, len)&lt;br /&gt;
	local temp = 0;&lt;br /&gt;
	isxn_str = { isxn_str:byte(1, len) };	-- make a table of byte values &#039;0&#039; → 0x30 .. &#039;9&#039;  → 0x39, &#039;X&#039; → 0x58&lt;br /&gt;
	len = len+1;							-- adjust to be a loop counter&lt;br /&gt;
	for i, v in ipairs( isxn_str ) do		-- loop through all of the bytes and calculate the checksum&lt;br /&gt;
		if v == string.byte( &amp;quot;X&amp;quot; ) then		-- if checkdigit is X (compares the byte value of &#039;X&#039; which is 0x58)&lt;br /&gt;
			temp = temp + 10*( len - i );	-- it represents 10 decimal&lt;br /&gt;
		else&lt;br /&gt;
			temp = temp + tonumber( string.char(v) )*(len-i);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return temp % 11 == 0;					-- returns true if calculation result is zero&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; IS _ V A L I D _ I S X N  _ 1 3 &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
ISBN-13 and ISMN validator code calculates checksum across all 13 isbn/ismn digits including the check digit.&lt;br /&gt;
If the number is valid, the result will be 0. Before calling this function, isbn-13/ismn must be checked for length&lt;br /&gt;
and stripped of dashes, spaces and other non-isxn-13 characters.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_valid_isxn_13 (isxn_str)&lt;br /&gt;
	local temp=0;&lt;br /&gt;
	&lt;br /&gt;
	isxn_str = { isxn_str:byte(1, 13) };										-- make a table of byte values &#039;0&#039; → 0x30 .. &#039;9&#039;  → 0x39&lt;br /&gt;
	for i, v in ipairs( isxn_str ) do&lt;br /&gt;
		temp = temp + (3 - 2*(i % 2)) * tonumber( string.char(v) );				-- multiply odd index digits by 1, even index digits by 3 and sum; includes check digit&lt;br /&gt;
	end&lt;br /&gt;
	return temp % 10 == 0;														-- sum modulo 10 is zero when isbn-13/ismn is correct&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C H E C K _ I S B N &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Determines whether an ISBN string is valid&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function check_isbn( isbn_str )&lt;br /&gt;
	if nil ~= isbn_str:match(&amp;quot;[^%s-0-9X]&amp;quot;) then return false; end		-- fail if isbn_str contains anything but digits, hyphens, or the uppercase X&lt;br /&gt;
	isbn_str = isbn_str:gsub( &amp;quot;-&amp;quot;, &amp;quot;&amp;quot; ):gsub( &amp;quot; &amp;quot;, &amp;quot;&amp;quot; );	-- remove hyphens and spaces&lt;br /&gt;
	local len = isbn_str:len();&lt;br /&gt;
 &lt;br /&gt;
	if len ~= 10 and len ~= 13 then&lt;br /&gt;
		return false;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if len == 10 then&lt;br /&gt;
		if isbn_str:match( &amp;quot;^%d*X?$&amp;quot; ) == nil then return false; end&lt;br /&gt;
		return is_valid_isxn(isbn_str, 10);&lt;br /&gt;
	else&lt;br /&gt;
		local temp = 0;&lt;br /&gt;
		if isbn_str:match( &amp;quot;^97[89]%d*$&amp;quot; ) == nil then return false; end		-- isbn13 begins with 978 or 979; ismn begins with 979&lt;br /&gt;
		return is_valid_isxn_13 (isbn_str);&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C H E C K _ I S M N &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Determines whether an ISMN string is valid.  Similar to isbn-13, ismn is 13 digits begining 979-0-... and uses the&lt;br /&gt;
same check digit calculations.  See http://www.ismn-international.org/download/Web_ISMN_Users_Manual_2008-6.pdf&lt;br /&gt;
section 2, pages 9–12.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function ismn (id)&lt;br /&gt;
	local handler = cfg.id_handlers[&#039;ISMN&#039;];&lt;br /&gt;
	local text;&lt;br /&gt;
	local valid_ismn = true;&lt;br /&gt;
&lt;br /&gt;
	id=id:gsub( &amp;quot;[%s-–]&amp;quot;, &amp;quot;&amp;quot; );													-- strip spaces, hyphens, and endashes from the ismn&lt;br /&gt;
&lt;br /&gt;
	if 13 ~= id:len() or id:match( &amp;quot;^9790%d*$&amp;quot; ) == nil then					-- ismn must be 13 digits and begin 9790&lt;br /&gt;
		valid_ismn = false;&lt;br /&gt;
	else&lt;br /&gt;
		valid_ismn=is_valid_isxn_13 (id);										-- validate ismn&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--	text = internal_link_id({link = handler.link, label = handler.label,		-- use this (or external version) when there is some place to link to&lt;br /&gt;
--		prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode})&lt;br /&gt;
 &lt;br /&gt;
	text=&amp;quot;[[&amp;quot; .. handler.link .. &amp;quot;|&amp;quot; .. handler.label .. &amp;quot;]]&amp;quot; .. handler.separator .. id;		-- because no place to link to yet&lt;br /&gt;
&lt;br /&gt;
	if false == valid_ismn then&lt;br /&gt;
		text = text .. &#039; &#039; .. set_error( &#039;bad_ismn&#039; )							-- add an error message if the issn is invalid&lt;br /&gt;
	end &lt;br /&gt;
	&lt;br /&gt;
	return text;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S S N &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Validate and format an issn.  This code fixes the case where an editor has included an ISSN in the citation but has separated the two groups of four&lt;br /&gt;
digits with a space.  When that condition occurred, the resulting link looked like this:&lt;br /&gt;
&lt;br /&gt;
	|issn=0819 4327 gives: [http://www.worldcat.org/issn/0819 4327 0819 4327]  -- can&#039;t have spaces in an external link&lt;br /&gt;
	&lt;br /&gt;
This code now prevents that by inserting a hyphen at the issn midpoint.  It also validates the issn for length and makes sure that the checkdigit agrees&lt;br /&gt;
with the calculated value.  Incorrect length (8 digits), characters other than 0-9 and X, or checkdigit / calculated value mismatch will all cause a check issn&lt;br /&gt;
error message.  The issn is always displayed with a hyphen, even if the issn was given as a single group of 8 digits.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function issn(id)&lt;br /&gt;
	local issn_copy = id;		-- save a copy of unadulterated issn; use this version for display if issn does not validate&lt;br /&gt;
	local handler = cfg.id_handlers[&#039;ISSN&#039;];&lt;br /&gt;
	local text;&lt;br /&gt;
	local valid_issn = true;&lt;br /&gt;
&lt;br /&gt;
	id=id:gsub( &amp;quot;[%s-–]&amp;quot;, &amp;quot;&amp;quot; );									-- strip spaces, hyphens, and endashes from the issn&lt;br /&gt;
&lt;br /&gt;
	if 8 ~= id:len() or nil == id:match( &amp;quot;^%d*X?$&amp;quot; ) then		-- validate the issn: 8 digits long, containing only 0-9 or X in the last position&lt;br /&gt;
		valid_issn=false;										-- wrong length or improper character&lt;br /&gt;
	else&lt;br /&gt;
		valid_issn=is_valid_isxn(id, 8);						-- validate issn&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if true == valid_issn then&lt;br /&gt;
		id = string.sub( id, 1, 4 ) .. &amp;quot;-&amp;quot; .. string.sub( id, 5 );	-- if valid, display correctly formatted version&lt;br /&gt;
	else&lt;br /&gt;
		id = issn_copy;											-- if not valid, use the show the invalid issn with error message&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	text = external_link_id({link = handler.link, label = handler.label,&lt;br /&gt;
		prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode})&lt;br /&gt;
 &lt;br /&gt;
	if false == valid_issn then&lt;br /&gt;
		text = text .. &#039; &#039; .. set_error( &#039;bad_issn&#039; )			-- add an error message if the issn is invalid&lt;br /&gt;
	end &lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A M A Z O N &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Formats a link to Amazon.  Do simple error checking: asin must be mix of 10 numeric or uppercase alpha&lt;br /&gt;
characters.  If a mix, first character must be uppercase alpha; if all numeric, asins must be 10-digit&lt;br /&gt;
isbn. If 10-digit isbn, add a maintenance category so a bot or awb script can replace |asin= with |isbn=.&lt;br /&gt;
Error message if not 10 characters, if not isbn10, if mixed and first character is a digit.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function amazon(id, domain)&lt;br /&gt;
	local err_cat = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if not id:match(&amp;quot;^[%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u]$&amp;quot;) then&lt;br /&gt;
		err_cat =  &#039; &#039; .. set_error (&#039;bad_asin&#039;);								-- asin is not a mix of 10 uppercase alpha and numeric characters&lt;br /&gt;
	else&lt;br /&gt;
		if id:match(&amp;quot;^%d%d%d%d%d%d%d%d%d[%dX]$&amp;quot;) then								-- if 10-digit numeric (or 9 digits with terminal X)&lt;br /&gt;
			if check_isbn( id ) then												-- see if asin value is isbn10&lt;br /&gt;
				add_maint_cat (&#039;ASIN&#039;);&lt;br /&gt;
			elseif not is_set (err_cat) then&lt;br /&gt;
				err_cat =  &#039; &#039; .. set_error (&#039;bad_asin&#039;);						-- asin is not isbn10&lt;br /&gt;
			end&lt;br /&gt;
		elseif not id:match(&amp;quot;^%u[%d%u]+$&amp;quot;) then&lt;br /&gt;
			err_cat =  &#039; &#039; .. set_error (&#039;bad_asin&#039;);							-- asin doesn&#039;t begin with uppercase alpha&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not is_set(domain) then &lt;br /&gt;
		domain = &amp;quot;com&amp;quot;;&lt;br /&gt;
	elseif in_array (domain, {&#039;jp&#039;, &#039;uk&#039;}) then			-- Japan, United Kingdom&lt;br /&gt;
		domain = &amp;quot;co.&amp;quot; .. domain;&lt;br /&gt;
	elseif in_array (domain, {&#039;au&#039;, &#039;br&#039;, &#039;mx&#039;}) then	-- Australia, Brazil, Mexico&lt;br /&gt;
		domain = &amp;quot;com.&amp;quot; .. domain;&lt;br /&gt;
	end&lt;br /&gt;
	local handler = cfg.id_handlers[&#039;ASIN&#039;];&lt;br /&gt;
	return external_link_id({link=handler.link,&lt;br /&gt;
		label=handler.label, prefix=handler.prefix .. domain .. &amp;quot;/dp/&amp;quot;,&lt;br /&gt;
		id=id, encode=handler.encode, separator = handler.separator}) .. err_cat;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R X I V &amp;gt;--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
See: http://arxiv.org/help/arxiv_identifier&lt;br /&gt;
&lt;br /&gt;
format and error check arXiv identifier.  There are three valid forms of the identifier:&lt;br /&gt;
the first form, valid only between date codes 9108 and 0703 is:&lt;br /&gt;
	arXiv:&amp;lt;archive&amp;gt;.&amp;lt;class&amp;gt;/&amp;lt;date code&amp;gt;&amp;lt;number&amp;gt;&amp;lt;version&amp;gt;&lt;br /&gt;
where:&lt;br /&gt;
	&amp;lt;archive&amp;gt; is a string of alpha characters - may be hyphenated; no other punctuation&lt;br /&gt;
	&amp;lt;class&amp;gt; is a string of alpha characters - may be hyphenated; no other punctuation&lt;br /&gt;
	&amp;lt;date code&amp;gt; is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01&lt;br /&gt;
		first digit of YY for this form can only 9 and 0&lt;br /&gt;
	&amp;lt;number&amp;gt; is a three-digit number&lt;br /&gt;
	&amp;lt;version&amp;gt; is a 1 or more digit number preceded with a lowercase v; no spaces (undocumented)&lt;br /&gt;
	&lt;br /&gt;
the second form, valid from April 2007 through December 2014 is:&lt;br /&gt;
	arXiv:&amp;lt;date code&amp;gt;.&amp;lt;number&amp;gt;&amp;lt;version&amp;gt;&lt;br /&gt;
where:&lt;br /&gt;
	&amp;lt;date code&amp;gt; is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01&lt;br /&gt;
	&amp;lt;number&amp;gt; is a four-digit number&lt;br /&gt;
	&amp;lt;version&amp;gt; is a 1 or more digit number preceded with a lowercase v; no spaces&lt;br /&gt;
&lt;br /&gt;
the third form, valid from January 2015 is:&lt;br /&gt;
	arXiv:&amp;lt;date code&amp;gt;.&amp;lt;number&amp;gt;&amp;lt;version&amp;gt;&lt;br /&gt;
where:&lt;br /&gt;
	&amp;lt;date code&amp;gt; and &amp;lt;version&amp;gt; are as defined for 0704-1412&lt;br /&gt;
	&amp;lt;number&amp;gt; is a five-digit number&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function arxiv (id, class)&lt;br /&gt;
	local handler = cfg.id_handlers[&#039;ARXIV&#039;];&lt;br /&gt;
	local year, month, version;&lt;br /&gt;
	local err_cat = &#039;&#039;;&lt;br /&gt;
	local text;&lt;br /&gt;
	&lt;br /&gt;
	if id:match(&amp;quot;^%a[%a%.%-]+/[90]%d[01]%d%d%d%d$&amp;quot;) or id:match(&amp;quot;^%a[%a%.%-]+/[90]%d[01]%d%d%d%dv%d+$&amp;quot;) then	-- test for the 9108-0703 format w/ &amp;amp; w/o version&lt;br /&gt;
		year, month = id:match(&amp;quot;^%a[%a%.%-]+/([90]%d)([01]%d)%d%d%d[v%d]*$&amp;quot;);&lt;br /&gt;
		year = tonumber(year);&lt;br /&gt;
		month = tonumber(month);&lt;br /&gt;
		if ((not (90 &amp;lt; year or 8 &amp;gt; year)) or (1 &amp;gt; month or 12 &amp;lt; month)) or		-- if invalid year or invalid month&lt;br /&gt;
			((91 == year and 7 &amp;gt; month) or (7 == year and 3 &amp;lt; month)) then		-- if years ok, are starting and ending months ok?&lt;br /&gt;
				err_cat = &#039; &#039; .. set_error( &#039;bad_arxiv&#039; );						-- set error message&lt;br /&gt;
		end&lt;br /&gt;
	elseif id:match(&amp;quot;^%d%d[01]%d%.%d%d%d%d$&amp;quot;) or id:match(&amp;quot;^%d%d[01]%d%.%d%d%d%dv%d+$&amp;quot;) then	-- test for the 0704-1412 w/ &amp;amp; w/o version&lt;br /&gt;
		year, month = id:match(&amp;quot;^(%d%d)([01]%d)%.%d%d%d%d[v%d]*$&amp;quot;);&lt;br /&gt;
		year = tonumber(year);&lt;br /&gt;
		month = tonumber(month);&lt;br /&gt;
		if ((7 &amp;gt; year) or (14 &amp;lt; year) or (1 &amp;gt; month or 12 &amp;lt; month)) or			-- is year invalid or is month invalid? (doesn&#039;t test for future years)&lt;br /&gt;
			((7 == year) and (4 &amp;gt; month)) then --or									-- when year is 07, is month invalid (before April)?&lt;br /&gt;
				err_cat = &#039; &#039; .. set_error( &#039;bad_arxiv&#039; );						-- set error message&lt;br /&gt;
		end&lt;br /&gt;
	elseif id:match(&amp;quot;^%d%d[01]%d%.%d%d%d%d%d$&amp;quot;) or id:match(&amp;quot;^%d%d[01]%d%.%d%d%d%d%dv%d+$&amp;quot;) then	-- test for the 1501- format w/ &amp;amp; w/o version&lt;br /&gt;
		year, month = id:match(&amp;quot;^(%d%d)([01]%d)%.%d%d%d%d%d[v%d]*$&amp;quot;);&lt;br /&gt;
		year = tonumber(year);&lt;br /&gt;
		month = tonumber(month);&lt;br /&gt;
		if ((15 &amp;gt; year) or (1 &amp;gt; month or 12 &amp;lt; month)) then						-- is year invalid or is month invalid? (doesn&#039;t test for future years)&lt;br /&gt;
			err_cat = &#039; &#039; .. set_error( &#039;bad_arxiv&#039; );							-- set error message&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		err_cat = &#039; &#039; .. set_error( &#039;bad_arxiv&#039; );								-- arXiv id doesn&#039;t match any format&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	text = external_link_id({link = handler.link, label = handler.label,&lt;br /&gt;
			prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) .. err_cat;&lt;br /&gt;
&lt;br /&gt;
	if is_set (class) then&lt;br /&gt;
		class = &#039; [[&#039; .. &#039;//arxiv.org/archive/&#039; .. class .. &#039; &#039; .. class .. &#039;]]&#039;;	-- external link within square brackets, not wikilink&lt;br /&gt;
	else&lt;br /&gt;
		class = &#039;&#039;;																-- empty string for concatenation&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return text .. class;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
lccn normalization (http://www.loc.gov/marc/lccn-namespace.html#normalization)&lt;br /&gt;
1. Remove all blanks.&lt;br /&gt;
2. If there is a forward slash (/) in the string, remove it, and remove all characters to the right of the forward slash.&lt;br /&gt;
3. If there is a hyphen in the string:&lt;br /&gt;
	a. Remove it.&lt;br /&gt;
	b. Inspect the substring following (to the right of) the (removed) hyphen. Then (and assuming that steps 1 and 2 have been carried out):&lt;br /&gt;
		1. All these characters should be digits, and there should be six or less. (not done in this function)&lt;br /&gt;
		2. If the length of the substring is less than 6, left-fill the substring with zeroes until the length is six.&lt;br /&gt;
&lt;br /&gt;
Returns a normalized lccn for lccn() to validate.  There is no error checking (step 3.b.1) performed in this function.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function normalize_lccn (lccn)&lt;br /&gt;
	lccn = lccn:gsub (&amp;quot;%s&amp;quot;, &amp;quot;&amp;quot;);									-- 1. strip whitespace&lt;br /&gt;
&lt;br /&gt;
	if nil ~= string.find (lccn,&#039;/&#039;) then&lt;br /&gt;
		lccn = lccn:match (&amp;quot;(.-)/&amp;quot;);								-- 2. remove forward slash and all character to the right of it&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local prefix&lt;br /&gt;
	local suffix&lt;br /&gt;
	prefix, suffix = lccn:match (&amp;quot;(.+)%-(.+)&amp;quot;);						-- 3.a remove hyphen by splitting the string into prefix and suffix&lt;br /&gt;
&lt;br /&gt;
	if nil ~= suffix then											-- if there was a hyphen&lt;br /&gt;
		suffix=string.rep(&amp;quot;0&amp;quot;, 6-string.len (suffix)) .. suffix;	-- 3.b.2 left fill the suffix with 0s if suffix length less than 6&lt;br /&gt;
		lccn=prefix..suffix;										-- reassemble the lccn&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return lccn;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Format LCCN link and do simple error checking.  LCCN is a character string 8-12 characters long. The length of the LCCN dictates the character type of the first 1-3 characters; the&lt;br /&gt;
rightmost eight are always digits. http://info-uri.info/registry/OAIHandler?verb=GetRecord&amp;amp;metadataPrefix=reg&amp;amp;identifier=info:lccn/&lt;br /&gt;
&lt;br /&gt;
length = 8 then all digits&lt;br /&gt;
length = 9 then lccn[1] is lower case alpha&lt;br /&gt;
length = 10 then lccn[1] and lccn[2] are both lower case alpha or both digits&lt;br /&gt;
length = 11 then lccn[1] is lower case alpha, lccn[2] and lccn[3] are both lower case alpha or both digits&lt;br /&gt;
length = 12 then lccn[1] and lccn[2] are both lower case alpha&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function lccn(lccn)&lt;br /&gt;
	local handler = cfg.id_handlers[&#039;LCCN&#039;];&lt;br /&gt;
	local err_cat =  &#039;&#039;;								-- presume that LCCN is valid&lt;br /&gt;
	local id = lccn;									-- local copy of the lccn&lt;br /&gt;
&lt;br /&gt;
	id = normalize_lccn (id);							-- get canonical form (no whitespace, hyphens, forward slashes)&lt;br /&gt;
	local len = id:len();								-- get the length of the lccn&lt;br /&gt;
&lt;br /&gt;
	if 8 == len then&lt;br /&gt;
		if id:match(&amp;quot;[^%d]&amp;quot;) then						-- if LCCN has anything but digits (nil if only digits)&lt;br /&gt;
			err_cat = &#039; &#039; .. set_error( &#039;bad_lccn&#039; );	-- set an error message&lt;br /&gt;
		end&lt;br /&gt;
	elseif 9 == len then								-- LCCN should be adddddddd&lt;br /&gt;
		if nil == id:match(&amp;quot;%l%d%d%d%d%d%d%d%d&amp;quot;) then			-- does it match our pattern?&lt;br /&gt;
			err_cat = &#039; &#039; .. set_error( &#039;bad_lccn&#039; );	-- set an error message&lt;br /&gt;
		end&lt;br /&gt;
	elseif 10 == len then								-- LCCN should be aadddddddd or dddddddddd&lt;br /&gt;
		if id:match(&amp;quot;[^%d]&amp;quot;) then							-- if LCCN has anything but digits (nil if only digits) ...&lt;br /&gt;
			if nil == id:match(&amp;quot;^%l%l%d%d%d%d%d%d%d%d&amp;quot;) then	-- ... see if it matches our pattern&lt;br /&gt;
				err_cat = &#039; &#039; .. set_error( &#039;bad_lccn&#039; );	-- no match, set an error message&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif 11 == len then								-- LCCN should be aaadddddddd or adddddddddd&lt;br /&gt;
		if not (id:match(&amp;quot;^%l%l%l%d%d%d%d%d%d%d%d&amp;quot;) or id:match(&amp;quot;^%l%d%d%d%d%d%d%d%d%d%d&amp;quot;)) then	-- see if it matches one of our patterns&lt;br /&gt;
			err_cat = &#039; &#039; .. set_error( &#039;bad_lccn&#039; );	-- no match, set an error message&lt;br /&gt;
		end&lt;br /&gt;
	elseif 12 == len then								-- LCCN should be aadddddddddd&lt;br /&gt;
		if not id:match(&amp;quot;^%l%l%d%d%d%d%d%d%d%d%d%d&amp;quot;) then	-- see if it matches our pattern&lt;br /&gt;
			err_cat = &#039; &#039; .. set_error( &#039;bad_lccn&#039; );	-- no match, set an error message&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		err_cat = &#039; &#039; .. set_error( &#039;bad_lccn&#039; );		-- wrong length, set an error message&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not is_set (err_cat) and nil ~= lccn:find (&#039;%s&#039;) then&lt;br /&gt;
		err_cat = &#039; &#039; .. set_error( &#039;bad_lccn&#039; );		-- lccn contains a space, set an error message&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return external_link_id({link = handler.link, label = handler.label,&lt;br /&gt;
			prefix=handler.prefix,id=lccn,separator=handler.separator, encode=handler.encode}) .. err_cat;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Format PMID and do simple error checking.  PMIDs are sequential numbers beginning at 1 and counting up.  This code checks the PMID to see that it&lt;br /&gt;
contains only digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically as more PMIDs are issued.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function pmid(id)&lt;br /&gt;
	local test_limit = 30000000;						-- update this value as PMIDs approach&lt;br /&gt;
	local handler = cfg.id_handlers[&#039;PMID&#039;];&lt;br /&gt;
	local err_cat =  &#039;&#039;;								-- presume that PMID is valid&lt;br /&gt;
	&lt;br /&gt;
	if id:match(&amp;quot;[^%d]&amp;quot;) then							-- if PMID has anything but digits&lt;br /&gt;
		err_cat = &#039; &#039; .. set_error( &#039;bad_pmid&#039; );		-- set an error message&lt;br /&gt;
	else												-- PMID is only digits&lt;br /&gt;
		local id_num = tonumber(id);					-- convert id to a number for range testing&lt;br /&gt;
		if 1 &amp;gt; id_num or test_limit &amp;lt; id_num then		-- if PMID is outside test limit boundaries&lt;br /&gt;
			err_cat = &#039; &#039; .. set_error( &#039;bad_pmid&#039; );	-- set an error message&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return external_link_id({link = handler.link, label = handler.label,&lt;br /&gt;
			prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) .. err_cat;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ E M B A R G O E D &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Determines if a PMC identifier&#039;s online version is embargoed. Compares the date in |embargo= against today&#039;s date.  If embargo date is&lt;br /&gt;
in the future, returns the content of |embargo=; otherwise, returns and empty string because the embargo has expired or because&lt;br /&gt;
|embargo= was not set in this cite.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_embargoed (embargo)&lt;br /&gt;
	if is_set (embargo) then&lt;br /&gt;
		local lang = mw.getContentLanguage();&lt;br /&gt;
		local good1, embargo_date, good2, todays_date;&lt;br /&gt;
		good1, embargo_date = pcall( lang.formatDate, lang, &#039;U&#039;, embargo );&lt;br /&gt;
		good2, todays_date = pcall( lang.formatDate, lang, &#039;U&#039; );&lt;br /&gt;
	&lt;br /&gt;
		if good1 and good2 then													-- if embargo date and today&#039;s date are good dates&lt;br /&gt;
			if tonumber( embargo_date ) &amp;gt;= tonumber( todays_date ) then			-- is embargo date is in the future?&lt;br /&gt;
				return embargo;													-- still embargoed&lt;br /&gt;
			else&lt;br /&gt;
				add_maint_cat (&#039;embargo&#039;)&lt;br /&gt;
				return &#039;&#039;;														-- unset because embargo has expired&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&#039;;																	-- |embargo= not set return empty string&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; P M C &amp;gt;------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Format a PMC, do simple error checking, and check for embargoed articles.&lt;br /&gt;
&lt;br /&gt;
The embargo parameter takes a date for a value. If the embargo date is in the future the PMC identifier will not&lt;br /&gt;
be linked to the article.  If the embargo date is today or in the past, or if it is empty or omitted, then the&lt;br /&gt;
PMC identifier is linked to the article through the link at cfg.id_handlers[&#039;PMC&#039;].prefix.&lt;br /&gt;
&lt;br /&gt;
PMC embargo date testing is done in function is_embargoed () which is called earlier because when the citation&lt;br /&gt;
has |pmc=&amp;lt;value&amp;gt; but does not have a |url= then |title= is linked with the PMC link.  Function is_embargoed ()&lt;br /&gt;
returns the embargo date if the PMC article is still embargoed, otherwise it returns an empty string.&lt;br /&gt;
&lt;br /&gt;
PMCs are sequential numbers beginning at 1 and counting up.  This code checks the PMC to see that it contains only digits and is less&lt;br /&gt;
than test_limit; the value in local variable test_limit will need to be updated periodically as more PMCs are issued.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function pmc(id, embargo)&lt;br /&gt;
	local test_limit = 5000000;							-- update this value as PMCs approach&lt;br /&gt;
	local handler = cfg.id_handlers[&#039;PMC&#039;];&lt;br /&gt;
	local err_cat =  &#039;&#039;;								-- presume that PMC is valid&lt;br /&gt;
	&lt;br /&gt;
	local text;&lt;br /&gt;
&lt;br /&gt;
	if id:match(&amp;quot;[^%d]&amp;quot;) then							-- if PMC has anything but digits&lt;br /&gt;
		err_cat = &#039; &#039; .. set_error( &#039;bad_pmc&#039; );			-- set an error message&lt;br /&gt;
	else												-- PMC is only digits&lt;br /&gt;
		local id_num = tonumber(id);					-- convert id to a number for range testing&lt;br /&gt;
		if 1 &amp;gt; id_num or test_limit &amp;lt; id_num then		-- if PMC is outside test limit boundaries&lt;br /&gt;
			err_cat = &#039; &#039; .. set_error( &#039;bad_pmc&#039; );		-- set an error message&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if is_set (embargo) then													-- is PMC is still embargoed?&lt;br /&gt;
		text=&amp;quot;[[&amp;quot; .. handler.link .. &amp;quot;|&amp;quot; .. handler.label .. &amp;quot;]]:&amp;quot; .. handler.separator .. id .. err_cat;	-- still embargoed so no external link&lt;br /&gt;
	else&lt;br /&gt;
		text = external_link_id({link = handler.link, label = handler.label,			-- no embargo date or embargo has expired, ok to link to article&lt;br /&gt;
			prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) .. err_cat;&lt;br /&gt;
	end&lt;br /&gt;
	return text;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Formats a DOI and checks for DOI errors.&lt;br /&gt;
&lt;br /&gt;
-- DOI names contain two parts: prefix and suffix separated by a forward slash.&lt;br /&gt;
--  Prefix: directory indicator &#039;10.&#039; followed by a registrant code&lt;br /&gt;
--  Suffix: character string of any length chosen by the registrant&lt;br /&gt;
&lt;br /&gt;
-- This function checks a DOI name for: prefix/suffix.  If the doi name contains spaces or endashes,&lt;br /&gt;
-- or, if it ends with a period or a comma, this function will emit a bad_doi error message.&lt;br /&gt;
&lt;br /&gt;
-- DOI names are case-insensitive and can incorporate any printable Unicode characters so the test for spaces, endash,&lt;br /&gt;
-- and terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely if ever used in doi names.&lt;br /&gt;
&lt;br /&gt;
local function doi(id, inactive)&lt;br /&gt;
	local cat = &amp;quot;&amp;quot;&lt;br /&gt;
	local handler = cfg.id_handlers[&#039;DOI&#039;];&lt;br /&gt;
	&lt;br /&gt;
	local text;&lt;br /&gt;
	if is_set(inactive) then&lt;br /&gt;
		local inactive_year = inactive:match(&amp;quot;%d%d%d%d&amp;quot;) or &#039;&#039;;		-- try to get the year portion from the inactive date&lt;br /&gt;
		text = &amp;quot;[[&amp;quot; .. handler.link .. &amp;quot;|&amp;quot; .. handler.label .. &amp;quot;]]:&amp;quot; .. id;&lt;br /&gt;
		if is_set(inactive_year) then&lt;br /&gt;
			table.insert( z.error_categories, &amp;quot;Pages with DOIs inactive since &amp;quot; .. inactive_year );&lt;br /&gt;
		else&lt;br /&gt;
			table.insert( z.error_categories, &amp;quot;Pages with inactive DOIs&amp;quot; );	-- when inactive doesn&#039;t contain a recognizable year&lt;br /&gt;
		end&lt;br /&gt;
		inactive = &amp;quot; (&amp;quot; .. cfg.messages[&#039;inactive&#039;] .. &amp;quot; &amp;quot; .. inactive .. &amp;quot;)&amp;quot; &lt;br /&gt;
	else &lt;br /&gt;
		text = external_link_id({link = handler.link, label = handler.label,&lt;br /&gt;
			prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode})&lt;br /&gt;
		inactive = &amp;quot;&amp;quot; &lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if nil == id:match(&amp;quot;^10%.[^%s–]-/[^%s–]-[^%.,]$&amp;quot;) then	-- doi must begin with &#039;10.&#039;, must contain a fwd slash, must not contain spaces or endashes, and must not end with period or comma&lt;br /&gt;
		cat = &#039; &#039; .. set_error( &#039;bad_doi&#039; );&lt;br /&gt;
	end&lt;br /&gt;
	return text .. inactive .. cat &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; O P E N L I B R A R Y &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Formats an OpenLibrary link, and checks for associated errors.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
local function openlibrary(id)&lt;br /&gt;
	local code = id:match(&amp;quot;^%d+([AMW])$&amp;quot;);										-- only digits followed by &#039;A&#039;, &#039;M&#039;, or &#039;W&#039;&lt;br /&gt;
	local handler = cfg.id_handlers[&#039;OL&#039;];&lt;br /&gt;
&lt;br /&gt;
	if ( code == &amp;quot;A&amp;quot; ) then&lt;br /&gt;
		return external_link_id({link=handler.link, label=handler.label,&lt;br /&gt;
			prefix=handler.prefix .. &#039;authors/OL&#039;,&lt;br /&gt;
			id=id, separator=handler.separator,	encode = handler.encode})&lt;br /&gt;
	elseif ( code == &amp;quot;M&amp;quot; ) then&lt;br /&gt;
		return external_link_id({link=handler.link, label=handler.label,&lt;br /&gt;
			prefix=handler.prefix .. &#039;books/OL&#039;,&lt;br /&gt;
			id=id, separator=handler.separator,	encode = handler.encode})&lt;br /&gt;
	elseif ( code == &amp;quot;W&amp;quot; ) then&lt;br /&gt;
		return external_link_id({link=handler.link, label=handler.label,&lt;br /&gt;
			prefix=handler.prefix .. &#039;works/OL&#039;,&lt;br /&gt;
			id=id, separator=handler.separator,	encode = handler.encode})&lt;br /&gt;
	else&lt;br /&gt;
		return external_link_id({link=handler.link, label=handler.label,&lt;br /&gt;
			prefix=handler.prefix .. &#039;OL&#039;,&lt;br /&gt;
			id=id, separator=handler.separator,	encode = handler.encode}) .. &#039; &#039; .. set_error( &#039;bad_ol&#039; );&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M E S S A G E _ I D &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Validate and format a usenet message id.  Simple error checking, looks for &#039;id-left@id-right&#039; not enclosed in&lt;br /&gt;
&#039;&amp;lt;&#039; and/or &#039;&amp;gt;&#039; angle brackets.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function message_id (id)&lt;br /&gt;
	local handler = cfg.id_handlers[&#039;USENETID&#039;];&lt;br /&gt;
&lt;br /&gt;
	text = external_link_id({link = handler.link, label = handler.label,&lt;br /&gt;
		prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode})&lt;br /&gt;
 &lt;br /&gt;
	if not id:match(&#039;^.+@.+$&#039;) or not id:match(&#039;^[^&amp;lt;].*[^&amp;gt;]$&#039;)then				-- doesn&#039;t have &#039;@&#039; or has one or first or last character is &#039;&amp;lt; or &#039;&amp;gt;&#039;&lt;br /&gt;
		text = text .. &#039; &#039; .. set_error( &#039;bad_message_id&#039; )						-- add an error message if the message id is invalid&lt;br /&gt;
	end &lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S E T _ T I T L E T Y P E &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This function sets default title types (equivalent to the citation including |type=&amp;lt;default value&amp;gt;) for those templates that have defaults.&lt;br /&gt;
Also handles the special case where it is desirable to omit the title type from the rendered citation (|type=none).&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function set_titletype (cite_class, title_type)&lt;br /&gt;
	if is_set(title_type) then&lt;br /&gt;
		if &amp;quot;none&amp;quot; == title_type then&lt;br /&gt;
			title_type = &amp;quot;&amp;quot;;													-- if |type=none then type parameter not displayed&lt;br /&gt;
		end&lt;br /&gt;
		return title_type;														-- if |type= has been set to any other value use that value&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return cfg.title_types [cite_class] or &#039;&#039;;									-- set template&#039;s default title type; else empty string for concatenation&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C L E A N _ I S B N &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Removes irrelevant text and dashes from ISBN number&lt;br /&gt;
Similar to that used for Special:BookSources&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function clean_isbn( isbn_str )&lt;br /&gt;
	return isbn_str:gsub( &amp;quot;[^-0-9X]&amp;quot;, &amp;quot;&amp;quot; );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E S C A P E _ L U A _ M A G I C _ C H A R S &amp;gt;----------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns a string where all of lua&#039;s magic characters have been escaped.  This is important because functions like&lt;br /&gt;
string.gsub() treat their pattern and replace strings as patterns, not literal strings.&lt;br /&gt;
]]&lt;br /&gt;
local function escape_lua_magic_chars (argument)&lt;br /&gt;
	argument = argument:gsub(&amp;quot;%%&amp;quot;, &amp;quot;%%%%&amp;quot;);										-- replace % with %%&lt;br /&gt;
	argument = argument:gsub(&amp;quot;([%^%$%(%)%.%[%]%*%+%-%?])&amp;quot;, &amp;quot;%%%1&amp;quot;);				-- replace all other lua magic pattern characters&lt;br /&gt;
	return argument;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S T R I P _ A P O S T R O P H E _ M A R K U P &amp;gt;--------------------------------&lt;br /&gt;
&lt;br /&gt;
Strip wiki italic and bold markup from argument so that it doesn&#039;t contaminate COinS metadata.&lt;br /&gt;
This function strips common patterns of apostrophe markup.  We presume that editors who have taken the time to&lt;br /&gt;
markup a title have, as a result, provided valid markup. When they don&#039;t, some single apostrophes are left behind.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function strip_apostrophe_markup (argument)&lt;br /&gt;
	if not is_set (argument) then return argument; end&lt;br /&gt;
&lt;br /&gt;
	while true do&lt;br /&gt;
		if argument:match (&amp;quot;%&#039;%&#039;%&#039;%&#039;%&#039;&amp;quot;) then									-- bold italic (5)&lt;br /&gt;
			argument=argument:gsub(&amp;quot;%&#039;%&#039;%&#039;%&#039;%&#039;&amp;quot;, &amp;quot;&amp;quot;);							-- remove all instances of it&lt;br /&gt;
		elseif argument:match (&amp;quot;%&#039;%&#039;%&#039;%&#039;&amp;quot;) then									-- italic start and end without content (4)&lt;br /&gt;
			argument=argument:gsub(&amp;quot;%&#039;%&#039;%&#039;%&#039;&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		elseif argument:match (&amp;quot;%&#039;%&#039;%&#039;&amp;quot;) then									-- bold (3)&lt;br /&gt;
			argument=argument:gsub(&amp;quot;%&#039;%&#039;%&#039;&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		elseif argument:match (&amp;quot;%&#039;%&#039;&amp;quot;) then										-- italic (2)&lt;br /&gt;
			argument=argument:gsub(&amp;quot;%&#039;%&#039;&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		else&lt;br /&gt;
			break;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return argument;															-- done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A K E _ C O I N S _ T I T L E &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Makes a title for COinS from Title and / or ScriptTitle (or any other name-script pairs)&lt;br /&gt;
&lt;br /&gt;
Apostrophe markup (bold, italics) is stripped from each value so that the COinS metadata isn&#039;t correupted with strings&lt;br /&gt;
of %27%27...&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function make_coins_title (title, script)&lt;br /&gt;
	if is_set (title) then&lt;br /&gt;
		title = strip_apostrophe_markup (title);								-- strip any apostrophe markup&lt;br /&gt;
	else&lt;br /&gt;
		title=&#039;&#039;;																-- if not set, make sure title is an empty string&lt;br /&gt;
	end&lt;br /&gt;
	if is_set (script) then&lt;br /&gt;
		script = script:gsub (&#039;^%l%l%s*:%s*&#039;, &#039;&#039;);								-- remove language prefix if present (script value may now be empty string)&lt;br /&gt;
		script = strip_apostrophe_markup (script);								-- strip any apostrophe markup&lt;br /&gt;
	else&lt;br /&gt;
		script=&#039;&#039;;																-- if not set, make sure script is an empty string&lt;br /&gt;
	end&lt;br /&gt;
	if is_set (title) and is_set (script) then&lt;br /&gt;
		script = &#039; &#039; .. script;													-- add a space before we concatenate&lt;br /&gt;
	end&lt;br /&gt;
	return title .. script;														-- return the concatenation&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; G E T _ C O I N S _ P A G E S &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Extract page numbers from external wikilinks in any of the |page=, |pages=, or |at= parameters for use in COinS.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function get_coins_pages (pages)&lt;br /&gt;
	local pattern;&lt;br /&gt;
	if not is_set (pages) then return pages; end								-- if no page numbers then we&#039;re done&lt;br /&gt;
	&lt;br /&gt;
	while true do&lt;br /&gt;
		pattern = pages:match(&amp;quot;%[(%w*:?//[^ ]+%s+)[%w%d].*%]&amp;quot;);					-- pattern is the opening bracket, the url and following space(s): &amp;quot;[url &amp;quot;&lt;br /&gt;
		if nil == pattern then break; end										-- no more urls&lt;br /&gt;
		pattern = escape_lua_magic_chars (pattern);								-- pattern is not a literal string; escape lua&#039;s magic pattern characters&lt;br /&gt;
		pages = pages:gsub(pattern, &amp;quot;&amp;quot;);										-- remove as many instances of pattern as possible&lt;br /&gt;
	end&lt;br /&gt;
	pages = pages:gsub(&amp;quot;[%[%]]&amp;quot;, &amp;quot;&amp;quot;);											-- remove the brackets&lt;br /&gt;
	pages = pages:gsub(&amp;quot;–&amp;quot;, &amp;quot;-&amp;quot; );							-- replace endashes with hyphens&lt;br /&gt;
	pages = pages:gsub(&amp;quot;&amp;amp;%w+;&amp;quot;, &amp;quot;-&amp;quot; );						-- and replace html entities (&amp;amp;ndash; etc.) with hyphens; do we need to replace numerical entities like &amp;amp;#32; and the like?&lt;br /&gt;
	return pages;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Gets the display text for a wikilink like [[A|B]] or [[B]] gives B&lt;br /&gt;
local function remove_wiki_link( str )&lt;br /&gt;
	return (str:gsub( &amp;quot;%[%[([^%[%]]*)%]%]&amp;quot;, function(l)&lt;br /&gt;
		return l:gsub( &amp;quot;^[^|]*|(.*)$&amp;quot;, &amp;quot;%1&amp;quot; ):gsub(&amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;);&lt;br /&gt;
	end));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Converts a hyphen to a dash&lt;br /&gt;
local function hyphen_to_dash( str )&lt;br /&gt;
	if not is_set(str) or str:match( &amp;quot;[%[%]{}&amp;lt;&amp;gt;]&amp;quot; ) ~= nil then&lt;br /&gt;
		return str;&lt;br /&gt;
	end	&lt;br /&gt;
	return str:gsub( &#039;-&#039;, &#039;–&#039; );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S A F E _ J O I N &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Joins a sequence of strings together while checking for duplicate separation characters.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function safe_join( tbl, duplicate_char )&lt;br /&gt;
	--[[&lt;br /&gt;
	Note: we use string functions here, rather than ustring functions.&lt;br /&gt;
	&lt;br /&gt;
	This has considerably faster performance and should work correctly as &lt;br /&gt;
	long as the duplicate_char is strict ASCII.  The strings&lt;br /&gt;
	in tbl may be ASCII or UTF8.&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	local str = &#039;&#039;;																-- the output string&lt;br /&gt;
	local comp = &#039;&#039;;															-- what does &#039;comp&#039; mean?&lt;br /&gt;
	local end_chr = &#039;&#039;;&lt;br /&gt;
	local trim;&lt;br /&gt;
	for _, value in ipairs( tbl ) do&lt;br /&gt;
		if value == nil then value = &#039;&#039;; end&lt;br /&gt;
		&lt;br /&gt;
		if str == &#039;&#039; then														-- if output string is empty&lt;br /&gt;
			str = value;														-- assign value to it (first time through the loop)&lt;br /&gt;
		elseif value ~= &#039;&#039; then&lt;br /&gt;
			if value:sub(1,1) == &#039;&amp;lt;&#039; then										-- Special case of values enclosed in spans and other markup.&lt;br /&gt;
				comp = value:gsub( &amp;quot;%b&amp;lt;&amp;gt;&amp;quot;, &amp;quot;&amp;quot; );								-- remove html markup (&amp;lt;span&amp;gt;string&amp;lt;/span&amp;gt; -&amp;gt; string)&lt;br /&gt;
			else&lt;br /&gt;
				comp = value;&lt;br /&gt;
			end&lt;br /&gt;
																				-- typically duplicate_char is sepc&lt;br /&gt;
			if comp:sub(1,1) == duplicate_char then								-- is first charactier same as duplicate_char? why test first character?&lt;br /&gt;
																				--   Because individual string segments often (always?) begin with terminal punct for th&lt;br /&gt;
																				--   preceding segment: &#039;First element&#039; .. &#039;sepc next element&#039; .. etc?&lt;br /&gt;
				trim = false;&lt;br /&gt;
				end_chr = str:sub(-1,-1);										-- get the last character of the output string&lt;br /&gt;
				-- str = str .. &amp;quot;&amp;lt;HERE(enchr=&amp;quot; .. end_chr.. &amp;quot;)&amp;quot;					-- debug stuff?&lt;br /&gt;
				if end_chr == duplicate_char then								-- if same as separator&lt;br /&gt;
					str = str:sub(1,-2);										-- remove it&lt;br /&gt;
				elseif end_chr == &amp;quot;&#039;&amp;quot; then										-- if it might be wikimarkup&lt;br /&gt;
					if str:sub(-3,-1) == duplicate_char .. &amp;quot;&#039;&#039;&amp;quot; then			-- if last three chars of str are sepc&#039;&#039; &lt;br /&gt;
						str = str:sub(1, -4) .. &amp;quot;&#039;&#039;&amp;quot;;							-- remove them and add back &#039;&#039;&lt;br /&gt;
					elseif str:sub(-5,-1) == duplicate_char .. &amp;quot;]]&#039;&#039;&amp;quot; then		-- if last five chars of str are sepc]]&#039;&#039; &lt;br /&gt;
						trim = true;											-- why? why do this and next differently from previous?&lt;br /&gt;
					elseif str:sub(-4,-1) == duplicate_char .. &amp;quot;]&#039;&#039;&amp;quot; then		-- if last four chars of str are sepc]&#039;&#039; &lt;br /&gt;
						trim = true;											-- same question&lt;br /&gt;
					end&lt;br /&gt;
				elseif end_chr == &amp;quot;]&amp;quot; then										-- if it might be wikimarkup&lt;br /&gt;
					if str:sub(-3,-1) == duplicate_char .. &amp;quot;]]&amp;quot; then			-- if last three chars of str are sepc]] wikilink &lt;br /&gt;
						trim = true;&lt;br /&gt;
					elseif str:sub(-2,-1) == duplicate_char .. &amp;quot;]&amp;quot; then			-- if last two chars of str are sepc] external link&lt;br /&gt;
						trim = true;&lt;br /&gt;
					elseif str:sub(-4,-1) == duplicate_char .. &amp;quot;&#039;&#039;]&amp;quot; then		-- normal case when |url=something &amp;amp; |title=Title.&lt;br /&gt;
						trim = true;&lt;br /&gt;
					end&lt;br /&gt;
				elseif end_chr == &amp;quot; &amp;quot; then										-- if last char of output string is a space&lt;br /&gt;
					if str:sub(-2,-1) == duplicate_char .. &amp;quot; &amp;quot; then				-- if last two chars of str are &amp;lt;sepc&amp;gt;&amp;lt;space&amp;gt;&lt;br /&gt;
						str = str:sub(1,-3);									-- remove them both&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if trim then&lt;br /&gt;
					if value ~= comp then 										-- value does not equal comp when value contains html markup&lt;br /&gt;
						local dup2 = duplicate_char;&lt;br /&gt;
						if dup2:match( &amp;quot;%A&amp;quot; ) then dup2 = &amp;quot;%&amp;quot; .. dup2; end		-- if duplicate_char not a letter then escape it&lt;br /&gt;
						&lt;br /&gt;
						value = value:gsub( &amp;quot;(%b&amp;lt;&amp;gt;)&amp;quot; .. dup2, &amp;quot;%1&amp;quot;, 1 )			-- remove duplicate_char if it follows html markup&lt;br /&gt;
					else&lt;br /&gt;
						value = value:sub( 2, -1 );								-- remove duplicate_char when it is first character&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			str = str .. value;													--add it to the output string&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return str;&lt;br /&gt;
end  &lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ G O O D _ V A N C _ N A M E &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
For Vancouver Style, author/editor names are supposed to be rendered in Latin (read ASCII) characters.  When a name&lt;br /&gt;
uses characters that contain diacritical marks, those characters are to converted to the corresponding Latin character.&lt;br /&gt;
When a name is written using a non-Latin alphabet or logogram, that name is to be transliterated into Latin characters.&lt;br /&gt;
These things are not currently possible in this module so are left to the editor to do.&lt;br /&gt;
&lt;br /&gt;
This test allows |first= and |last= names to contain any of the letters defined in the four Unicode Latin character sets&lt;br /&gt;
	[http://www.unicode.org/charts/PDF/U0000.pdf C0 Controls and Basic Latin] 0041–005A, 0061–007A&lt;br /&gt;
	[http://www.unicode.org/charts/PDF/U0080.pdf C1 Controls and Latin-1 Supplement] 00C0–00D6, 00D8–00F6, 00F8–00FF&lt;br /&gt;
	[http://www.unicode.org/charts/PDF/U0100.pdf Latin Extended-A] 0100–017F&lt;br /&gt;
	[http://www.unicode.org/charts/PDF/U0180.pdf Latin Extended-B] 0180–01BF, 01C4–024F&lt;br /&gt;
&lt;br /&gt;
|lastn= also allowed to contain hyphens, spaces, and apostrophes. (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/)&lt;br /&gt;
|firstn= also allowed to contain hyphens, spaces, apostrophes, and periods&lt;br /&gt;
&lt;br /&gt;
At the time of this writing, I had to write the &#039;if nil == mw.ustring.find ...&#039; test ouside of the code editor and paste it here&lt;br /&gt;
because the code editor gets confused between character insertion point and cursor position.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_good_vanc_name (last, first)&lt;br /&gt;
	if nil == mw.ustring.find (last, &amp;quot;^[A-Za-zÀ-ÖØ-öø-ƿǄ-ɏ%-%s%&#039;]*$&amp;quot;) or nil == mw.ustring.find (first, &amp;quot;^[A-Za-zÀ-ÖØ-öø-ƿǄ-ɏ%-%s%&#039;%.]*$&amp;quot;) then&lt;br /&gt;
		add_vanc_error ();&lt;br /&gt;
		return false;															-- not a string of latin characters; Vancouver required Romanization&lt;br /&gt;
	end;&lt;br /&gt;
	return true;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; R E D U C E _ T O _ I N I T I A L S &amp;gt;------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Attempts to convert names to initials in support of |name-list-format=vanc.  &lt;br /&gt;
&lt;br /&gt;
Names in |firstn= may be separated by spaces or hyphens, or for initials, a period. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35062/.&lt;br /&gt;
&lt;br /&gt;
Vancouver style requires family rank designations (Jr, II, III, etc) to be rendered as Jr, 2nd, 3rd, etc.  This form is not&lt;br /&gt;
currently supported by this code so correctly formed names like Smith JL 2nd are converted to Smith J2. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35085/.&lt;br /&gt;
&lt;br /&gt;
This function uses ustring functions because firstname initials may be any of the unicode Latin characters accepted by is_good_vanc_name ().&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function reduce_to_initials(first)&lt;br /&gt;
	if mw.ustring.match(first, &amp;quot;^%u%u$&amp;quot;) then return first end;					-- when first contains just two upper-case letters, nothing to do&lt;br /&gt;
	local initials = {}&lt;br /&gt;
	local i = 0;																-- counter for number of initials&lt;br /&gt;
	for word in mw.ustring.gmatch(first, &amp;quot;[^%s%.%-]+&amp;quot;) do						-- names separated by spaces, hyphens, or periods&lt;br /&gt;
		table.insert(initials, mw.ustring.sub(word,1,1))						-- Vancouver format does not include full stops.&lt;br /&gt;
		i = i + 1;																-- bump the counter &lt;br /&gt;
		if 2 &amp;lt;= i then break; end												-- only two initials allowed in Vancouver system; if 2, quit&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(initials)												-- Vancouver format does not include spaces.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L I S T  _ P E O P L E &amp;gt;-------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Formats a list of people (e.g. authors / editors) &lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function list_people(control, people, etal, list_name)					-- TODO: why is list_name here?  not used in this function&lt;br /&gt;
	local sep;&lt;br /&gt;
	local namesep;&lt;br /&gt;
	local format = control.format&lt;br /&gt;
	local maximum = control.maximum&lt;br /&gt;
	local lastauthoramp = control.lastauthoramp;&lt;br /&gt;
	local text = {}&lt;br /&gt;
&lt;br /&gt;
	if &#039;vanc&#039; == format then													-- Vancouver-like author/editor name styling?&lt;br /&gt;
		sep = &#039;,&#039;;																-- name-list separator between authors is a comma&lt;br /&gt;
		namesep = &#039; &#039;;															-- last/first separator is a space&lt;br /&gt;
	else&lt;br /&gt;
		sep = &#039;;&#039;																-- name-list separator between authors is a semicolon&lt;br /&gt;
		namesep = &#039;, &#039;															-- last/first separator is &amp;lt;comma&amp;gt;&amp;lt;space&amp;gt;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if sep:sub(-1,-1) ~= &amp;quot; &amp;quot; then sep = sep .. &amp;quot; &amp;quot; end&lt;br /&gt;
	if is_set (maximum) and maximum &amp;lt; 1 then return &amp;quot;&amp;quot;, 0; end					-- returned 0 is for EditorCount; not used for authors&lt;br /&gt;
	&lt;br /&gt;
	for i,person in ipairs(people) do&lt;br /&gt;
		if is_set(person.last) then&lt;br /&gt;
			local mask = person.mask&lt;br /&gt;
			local one&lt;br /&gt;
			local sep_one = sep;&lt;br /&gt;
			if is_set (maximum) and i &amp;gt; maximum then&lt;br /&gt;
				etal = true;&lt;br /&gt;
				break;&lt;br /&gt;
			elseif (mask ~= nil) then&lt;br /&gt;
				local n = tonumber(mask)&lt;br /&gt;
				if (n ~= nil) then&lt;br /&gt;
					one = string.rep(&amp;quot;&amp;amp;mdash;&amp;quot;,n)&lt;br /&gt;
				else&lt;br /&gt;
					one = mask;&lt;br /&gt;
					sep_one = &amp;quot; &amp;quot;;&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				one = person.last&lt;br /&gt;
				local first = person.first&lt;br /&gt;
				if is_set(first) then &lt;br /&gt;
					if ( &amp;quot;vanc&amp;quot; == format ) then								-- if vancouver format&lt;br /&gt;
						one = one:gsub (&#039;%.&#039;, &#039;&#039;);								-- remove periods from surnames (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/)&lt;br /&gt;
						if not person.corporate and is_good_vanc_name (one, first) then					-- and name is all Latin characters; corporate authors not tested&lt;br /&gt;
							first = reduce_to_initials(first)					-- attempt to convert first name(s) to initials&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					one = one .. namesep .. first &lt;br /&gt;
				end&lt;br /&gt;
				if is_set(person.link) and person.link ~= control.page_name then&lt;br /&gt;
					one = &amp;quot;[[&amp;quot; .. person.link .. &amp;quot;|&amp;quot; .. one .. &amp;quot;]]&amp;quot;				-- link author/editor if this page is not the author&#039;s/editor&#039;s page&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( text, one )&lt;br /&gt;
			table.insert( text, sep_one )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local count = #text / 2;													-- (number of names + number of separators) divided by 2&lt;br /&gt;
	if count &amp;gt; 0 then &lt;br /&gt;
		if count &amp;gt; 1 and is_set(lastauthoramp) and not etal then&lt;br /&gt;
			text[#text-2] = &amp;quot; &amp;amp; &amp;quot;;												-- replace last separator with ampersand text&lt;br /&gt;
		end&lt;br /&gt;
		text[#text] = nil;														-- erase the last separator&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = table.concat(text)											-- construct list&lt;br /&gt;
	if etal and is_set (result) then											-- etal may be set by |display-authors=etal but we might not have a last-first list&lt;br /&gt;
		result = result .. sep .. &#039; &#039; .. cfg.messages[&#039;et al&#039;];					-- we&#039;ve go a last-first list and etal so add et al.&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result, count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A N C H O R _ I D &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Generates a CITEREF anchor ID if we have at least one name or a date.  Otherwise returns an empty string.&lt;br /&gt;
&lt;br /&gt;
namelist is one of the contributor-, author-, or editor-name lists chosen in that order.  year is Year or anchor_year.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
local function anchor_id (namelist, year)&lt;br /&gt;
	local names={};																-- a table for the one to four names and year&lt;br /&gt;
	for i,v in ipairs (namelist) do												-- loop through the list and take up to the first four last names&lt;br /&gt;
		names[i] = v.last &lt;br /&gt;
		if i == 4 then break end												-- if four then done&lt;br /&gt;
	end&lt;br /&gt;
	table.insert (names, year);													-- add the year at the end&lt;br /&gt;
	local id = table.concat(names);												-- concatenate names and year for CITEREF id&lt;br /&gt;
	if is_set (id) then															-- if concatenation is not an empty string&lt;br /&gt;
		return &amp;quot;CITEREF&amp;quot; .. id;													-- add the CITEREF portion&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;;																-- return an empty string; no reason to include CITEREF id in this citation&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; N A M E _ H A S _ E T A L &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Evaluates the content of author and editor name parameters for variations on the theme of et al.  If found,&lt;br /&gt;
the et al. is removed, a flag is set to true and the function returns the modified name and the flag.&lt;br /&gt;
&lt;br /&gt;
This function never sets the flag to false but returns it&#039;s previous state because it may have been set by&lt;br /&gt;
previous passes through this function or by the parameters |display-authors=etal or |display-editors=etal&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function name_has_etal (name, etal, nocat)&lt;br /&gt;
&lt;br /&gt;
	if is_set (name) then														-- name can be nil in which case just return&lt;br /&gt;
		local etal_pattern = &amp;quot;[;,]? *[\&amp;quot;&#039;]*%f[%a][Ee][Tt] *[Aa][Ll][%.\&amp;quot;&#039;]*$&amp;quot;	-- variations on the &#039;et al&#039; theme&lt;br /&gt;
		local others_pattern = &amp;quot;[;,]? *%f[%a]and [Oo]thers&amp;quot;;					-- and alternate to et al.&lt;br /&gt;
		&lt;br /&gt;
		if name:match (etal_pattern) then										-- variants on et al.&lt;br /&gt;
			name = name:gsub (etal_pattern, &#039;&#039;);								-- if found, remove&lt;br /&gt;
			etal = true;														-- set flag (may have been set previously here or by |display-authors=etal)&lt;br /&gt;
			if not nocat then													-- no categorization for |vauthors=&lt;br /&gt;
				add_maint_cat (&#039;etal&#039;);											-- and add a category if not already added&lt;br /&gt;
			end&lt;br /&gt;
		elseif name:match (others_pattern) then									-- if not &#039;et al.&#039;, then &#039;and others&#039;?&lt;br /&gt;
			name = name:gsub (others_pattern, &#039;&#039;);								-- if found, remove&lt;br /&gt;
			etal = true;														-- set flag (may have been set previously here or by |display-authors=etal)&lt;br /&gt;
			if not nocat then													-- no categorization for |vauthors=&lt;br /&gt;
				add_maint_cat (&#039;etal&#039;);											-- and add a category if not already added&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return name, etal;															-- &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X T R A C T _ N A M E S &amp;gt;----------------------------------------------------&lt;br /&gt;
Gets name list from the input arguments&lt;br /&gt;
&lt;br /&gt;
Searches through args in sequential order to find |lastn= and |firstn= parameters (or their aliases), and their matching link and mask parameters.&lt;br /&gt;
Stops searching when both |lastn= and |firstn= are not found in args after two sequential attempts: found |last1=, |last2=, and |last3= but doesn&#039;t&lt;br /&gt;
find |last4= and |last5= then the search is done.&lt;br /&gt;
&lt;br /&gt;
This function emits an error message when there is a |firstn= without a matching |lastn=.  When there are &#039;holes&#039; in the list of last names, |last1= and |last3=&lt;br /&gt;
are present but |last2= is missing, an error message is emitted. |lastn= is not required to have a matching |firstn=.&lt;br /&gt;
&lt;br /&gt;
When an author or editor parameter contains some form of &#039;et al.&#039;, the &#039;et al.&#039; is stripped from the parameter and a flag (etal) returned&lt;br /&gt;
that will cause list_people() to add the static &#039;et al.&#039; text from Module:Citation/CS1/Configuration.  This keeps &#039;et al.&#039; out of the &lt;br /&gt;
template&#039;s metadata.  When this occurs, the page is added to a maintenance category.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function extract_names(args, list_name)&lt;br /&gt;
	local names = {};			-- table of names&lt;br /&gt;
	local last;					-- individual name components&lt;br /&gt;
	local first;&lt;br /&gt;
	local link;&lt;br /&gt;
	local mask;&lt;br /&gt;
	local i = 1;				-- loop counter/indexer&lt;br /&gt;
	local n = 1;				-- output table indexer&lt;br /&gt;
	local count = 0;			-- used to count the number of times we haven&#039;t found a |last= (or alias for authors, |editor-last or alias for editors)&lt;br /&gt;
	local etal=false;			-- return value set to true when we find some form of et al. in an author parameter&lt;br /&gt;
&lt;br /&gt;
	local err_msg_list_name = list_name:match (&amp;quot;(%w+)List&amp;quot;) .. &#039;s list&#039;;		-- modify AuthorList or EditorList for use in error messages if necessary&lt;br /&gt;
	while true do&lt;br /&gt;
		last = select_one( args, cfg.aliases[list_name .. &#039;-Last&#039;], &#039;redundant_parameters&#039;, i );		-- search through args for name components beginning at 1&lt;br /&gt;
		first = select_one( args, cfg.aliases[list_name .. &#039;-First&#039;], &#039;redundant_parameters&#039;, i );&lt;br /&gt;
		link = select_one( args, cfg.aliases[list_name .. &#039;-Link&#039;], &#039;redundant_parameters&#039;, i );&lt;br /&gt;
		mask = select_one( args, cfg.aliases[list_name .. &#039;-Mask&#039;], &#039;redundant_parameters&#039;, i );&lt;br /&gt;
&lt;br /&gt;
		last, etal = name_has_etal (last, etal, false);								-- find and remove variations on et al.&lt;br /&gt;
		first, etal = name_has_etal (first, etal, false);								-- find and remove variations on et al.&lt;br /&gt;
&lt;br /&gt;
		if first and not last then												-- if there is a firstn without a matching lastn&lt;br /&gt;
			table.insert( z.message_tail, { set_error( &#039;first_missing_last&#039;, {err_msg_list_name, i}, true ) } );	-- add this error message&lt;br /&gt;
		elseif not first and not last then										-- if both firstn and lastn aren&#039;t found, are we done?&lt;br /&gt;
			count = count + 1;													-- number of times we haven&#039;t found last and first&lt;br /&gt;
			if 2 &amp;lt;= count then													-- two missing names and we give up&lt;br /&gt;
				break;															-- normal exit or there is a two-name hole in the list; can&#039;t tell which&lt;br /&gt;
			end&lt;br /&gt;
		else																	-- we have last with or without a first&lt;br /&gt;
			if is_set (link) and false == link_param_ok (link) then				-- do this test here in case link is missing last&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;bad_paramlink&#039;, list_name:match (&amp;quot;(%w+)List&amp;quot;):lower() .. &#039;-link&#039; .. i )});			-- url or wikilink in author link;&lt;br /&gt;
			end&lt;br /&gt;
			names[n] = {last = last, first = first, link = link, mask = mask, corporate=false};	-- add this name to our names list (corporate for |vauthors= only)&lt;br /&gt;
			n = n + 1;															-- point to next location in the names table&lt;br /&gt;
			if 1 == count then													-- if the previous name was missing&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;missing_name&#039;, {err_msg_list_name, i-1}, true ) } );		-- add this error message&lt;br /&gt;
			end&lt;br /&gt;
			count = 0;															-- reset the counter, we&#039;re looking for two consecutive missing names&lt;br /&gt;
		end&lt;br /&gt;
		i = i + 1;																-- point to next args location&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return names, etal;															-- all done, return our list of names&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; B U I L D _ I D _ L I S T &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Populates ID table from arguments using configuration settings. Loops through cfg.id_handlers and searches args for&lt;br /&gt;
any of the parameters listed in each cfg.id_handlers[&#039;...&#039;].parameters.  If found, adds the parameter and value to&lt;br /&gt;
the identifier list.  Emits redundant error message is more than one alias exists in args&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function extract_ids( args )&lt;br /&gt;
	local id_list = {};															-- list of identifiers found in args&lt;br /&gt;
	for k, v in pairs( cfg.id_handlers ) do										-- k is uc identifier name as index to cfg.id_handlers; e.g. cfg.id_handlers[&#039;ISBN&#039;], v is a table&lt;br /&gt;
		v = select_one( args, v.parameters, &#039;redundant_parameters&#039; );			-- v.parameters is a table of aliases for k; here we pick one from args if present&lt;br /&gt;
		if is_set(v) then id_list[k] = v; end									-- if found in args, add identifier to our list&lt;br /&gt;
	end&lt;br /&gt;
	return id_list;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; B U I L D _ I D _ L I S T &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Takes a table of IDs created by extract_ids() and turns it into a table of formatted ID outputs.&lt;br /&gt;
&lt;br /&gt;
inputs:&lt;br /&gt;
	id_list – table of identifiers built by extract_ids()&lt;br /&gt;
	options – table of various template parameter values used to modify some manually handled identifiers&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function build_id_list( id_list, options )&lt;br /&gt;
	local new_list, handler = {};&lt;br /&gt;
&lt;br /&gt;
	function fallback(k) return { __index = function(t,i) return cfg.id_handlers[k][i] end } end;&lt;br /&gt;
	&lt;br /&gt;
	for k, v in pairs( id_list ) do												-- k is uc identifier name as index to cfg.id_handlers; e.g. cfg.id_handlers[&#039;ISBN&#039;], v is a table&lt;br /&gt;
		-- fallback to read-only cfg&lt;br /&gt;
		handler = setmetatable( { [&#039;id&#039;] = v }, fallback(k) );&lt;br /&gt;
		&lt;br /&gt;
		if handler.mode == &#039;external&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, external_link_id( handler ) } );&lt;br /&gt;
		elseif handler.mode == &#039;internal&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, internal_link_id( handler ) } );&lt;br /&gt;
		elseif handler.mode ~= &#039;manual&#039; then&lt;br /&gt;
			error( cfg.messages[&#039;unknown_ID_mode&#039;] );&lt;br /&gt;
		elseif k == &#039;DOI&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, doi( v, options.DoiBroken ) } );&lt;br /&gt;
		elseif k == &#039;ARXIV&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, arxiv( v, options.Class ) } ); &lt;br /&gt;
		elseif k == &#039;ASIN&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, amazon( v, options.ASINTLD ) } ); &lt;br /&gt;
		elseif k == &#039;LCCN&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, lccn( v ) } );&lt;br /&gt;
		elseif k == &#039;OL&#039; or k == &#039;OLA&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, openlibrary( v ) } );&lt;br /&gt;
		elseif k == &#039;PMC&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, pmc( v, options.Embargo ) } );&lt;br /&gt;
		elseif k == &#039;PMID&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, pmid( v ) } );&lt;br /&gt;
		elseif k == &#039;ISMN&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, ismn( v ) } );&lt;br /&gt;
		elseif k == &#039;ISSN&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, issn( v ) } );&lt;br /&gt;
		elseif k == &#039;ISBN&#039; then&lt;br /&gt;
			local ISBN = internal_link_id( handler );&lt;br /&gt;
			if not check_isbn( v ) and not is_set(options.IgnoreISBN) then&lt;br /&gt;
				ISBN = ISBN .. set_error( &#039;bad_isbn&#039;, {}, false, &amp;quot; &amp;quot;, &amp;quot;&amp;quot; );&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( new_list, {handler.label, ISBN } );				&lt;br /&gt;
		elseif k == &#039;USENETID&#039; then&lt;br /&gt;
			table.insert( new_list, {handler.label, message_id( v ) } );&lt;br /&gt;
		else&lt;br /&gt;
			error( cfg.messages[&#039;unknown_manual_ID&#039;] );&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function comp( a, b )	-- used in following table.sort()&lt;br /&gt;
		return a[1] &amp;lt; b[1];&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.sort( new_list, comp );&lt;br /&gt;
	for k, v in ipairs( new_list ) do&lt;br /&gt;
		new_list[k] = v[2];&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return new_list;&lt;br /&gt;
end&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C O I N S _ C L E A N U P &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Cleanup parameter values for the metadata by removing or replacing invisible characters and certain html entities.&lt;br /&gt;
&lt;br /&gt;
2015-12-10: there is a bug in mw.text.unstripNoWiki ().  It replaced math stripmarkers with the appropriate content&lt;br /&gt;
when it shouldn&#039;t.  See https://phabricator.wikimedia.org/T121085 and Wikipedia_talk:Lua#stripmarkers_and_mw.text.unstripNoWiki.28.29&lt;br /&gt;
&lt;br /&gt;
TODO: move the replacement patterns and replacement values into a table in /Configuration similar to the invisible&lt;br /&gt;
characters table?&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function coins_cleanup (value)&lt;br /&gt;
	value = mw.text.unstripNoWiki (value);										-- replace nowiki stripmarkers with their content&lt;br /&gt;
	value = value:gsub (&#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot; style=&amp;quot;padding%-left:0%.1em;&amp;quot;&amp;gt;&amp;amp;#39;s&amp;lt;/span&amp;gt;&#039;, &amp;quot;&#039;s&amp;quot;);	-- replace {{&#039;s}} template with simple apostrophe-s&lt;br /&gt;
	value = value:gsub (&#039;&amp;amp;zwj;\226\128\138\039\226\128\139&#039;, &amp;quot;&#039;&amp;quot;);				-- replace {{&#039;}} with simple apostrophe&lt;br /&gt;
	value = value:gsub (&#039;\226\128\138\039\226\128\139&#039;, &amp;quot;&#039;&amp;quot;);					-- replace {{&#039;}} with simple apostrophe (as of 2015-12-11)&lt;br /&gt;
	value = value:gsub (&#039;&amp;amp;nbsp;&#039;, &#039; &#039;);											-- replace &amp;amp;nbsp; entity with plain space&lt;br /&gt;
	value = value:gsub (&#039;\226\128\138&#039;, &#039; &#039;);									-- replace hair space with plain space&lt;br /&gt;
	value = value:gsub (&#039;&amp;amp;zwj;&#039;, &#039;&#039;);											-- remove &amp;amp;zwj; entities&lt;br /&gt;
	value = value:gsub (&#039;[\226\128\141\226\128\139]&#039;, &#039;&#039;)						-- remove zero-width joiner, zero-width space&lt;br /&gt;
	value = value:gsub (&#039;[\194\173\009\010\013]&#039;, &#039; &#039;);							-- replace soft hyphen, horizontal tab, line feed, carriage return with plain space&lt;br /&gt;
	return value;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C O I N S &amp;gt;--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
COinS metadata (see &amp;lt;http://ocoins.info/&amp;gt;) allows automated tools to parse the citation information.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function COinS(data, class)&lt;br /&gt;
	if &#039;table&#039; ~= type(data) or nil == next(data) then&lt;br /&gt;
		return &#039;&#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (data) do													-- spin through all of the metadata parameter values&lt;br /&gt;
		if &#039;ID_list&#039; ~= k and &#039;Authors&#039; ~= k then								-- except the ID_list and Author tables (author nowiki stripmarker done when Author table processed)&lt;br /&gt;
			data[k] = coins_cleanup (v);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ctx_ver = &amp;quot;Z39.88-2004&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	-- treat table strictly as an array with only set values.&lt;br /&gt;
	local OCinSoutput = setmetatable( {}, {&lt;br /&gt;
		__newindex = function(self, key, value)&lt;br /&gt;
			if is_set(value) then&lt;br /&gt;
				rawset( self, #self+1, table.concat{ key, &#039;=&#039;, mw.uri.encode( remove_wiki_link( value ) ) } );&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	});&lt;br /&gt;
	&lt;br /&gt;
	if in_array (class, {&#039;arxiv&#039;, &#039;journal&#039;, &#039;news&#039;}) or (in_array (class, {&#039;conference&#039;, &#039;interview&#039;, &#039;map&#039;, &#039;press release&#039;, &#039;web&#039;}) and is_set(data.Periodical)) or &lt;br /&gt;
		(&#039;citation&#039; == class and is_set(data.Periodical) and not is_set (data.Encyclopedia)) then&lt;br /&gt;
			OCinSoutput.rft_val_fmt = &amp;quot;info:ofi/fmt:kev:mtx:journal&amp;quot;;			-- journal metadata identifier&lt;br /&gt;
			if &#039;arxiv&#039; == class then											-- set genre according to the type of citation template we are rendering&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.genre&amp;quot;] = &amp;quot;preprint&amp;quot;;							-- cite arxiv&lt;br /&gt;
			elseif &#039;conference&#039; == class then&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.genre&amp;quot;] = &amp;quot;conference&amp;quot;;						-- cite conference (when Periodical set)&lt;br /&gt;
			elseif &#039;web&#039; == class then&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.genre&amp;quot;] = &amp;quot;unknown&amp;quot;;							-- cite web (when Periodical set)&lt;br /&gt;
			else&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.genre&amp;quot;] = &amp;quot;article&amp;quot;;							-- journal and other &#039;periodical&#039; articles&lt;br /&gt;
			end&lt;br /&gt;
			OCinSoutput[&amp;quot;rft.jtitle&amp;quot;] = data.Periodical;						-- journal only&lt;br /&gt;
			if is_set (data.Map) then&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.atitle&amp;quot;] = data.Map;							-- for a map in a periodical&lt;br /&gt;
			else&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.atitle&amp;quot;] = data.Title;							-- all other &#039;periodical&#039; article titles&lt;br /&gt;
			end&lt;br /&gt;
																				-- these used onlu for periodicals&lt;br /&gt;
			OCinSoutput[&amp;quot;rft.ssn&amp;quot;] = data.Season;								-- keywords: winter, spring, summer, fall&lt;br /&gt;
			OCinSoutput[&amp;quot;rft.chron&amp;quot;] = data.Chron;								-- free-form date components&lt;br /&gt;
			OCinSoutput[&amp;quot;rft.volume&amp;quot;] = data.Volume;							-- does not apply to books&lt;br /&gt;
			OCinSoutput[&amp;quot;rft.issue&amp;quot;] = data.Issue;&lt;br /&gt;
			OCinSoutput[&amp;quot;rft.pages&amp;quot;] = data.Pages;								-- also used in book metadata&lt;br /&gt;
&lt;br /&gt;
	elseif &#039;thesis&#039; ~= class then												-- all others except cite thesis are treated as &#039;book&#039; metadata; genre distinguishes&lt;br /&gt;
		OCinSoutput.rft_val_fmt = &amp;quot;info:ofi/fmt:kev:mtx:book&amp;quot;;					-- book metadata identifier&lt;br /&gt;
		if &#039;report&#039; == class or &#039;techreport&#039; == class then						-- cite report and cite techreport&lt;br /&gt;
			OCinSoutput[&amp;quot;rft.genre&amp;quot;] = &amp;quot;report&amp;quot;;&lt;br /&gt;
		elseif &#039;conference&#039; == class then										-- cite conference when Periodical not set&lt;br /&gt;
			OCinSoutput[&amp;quot;rft.genre&amp;quot;] = &amp;quot;conference&amp;quot;;&lt;br /&gt;
		elseif in_array (class, {&#039;book&#039;, &#039;citation&#039;, &#039;encyclopaedia&#039;, &#039;interview&#039;, &#039;map&#039;}) then&lt;br /&gt;
			if is_set (data.Chapter) then&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.genre&amp;quot;] = &amp;quot;bookitem&amp;quot;;&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.atitle&amp;quot;] = data.Chapter;						-- book chapter, encyclopedia article, interview in a book, or map title&lt;br /&gt;
			else&lt;br /&gt;
				if &#039;map&#039; == class or &#039;interview&#039; == class then&lt;br /&gt;
					OCinSoutput[&amp;quot;rft.genre&amp;quot;] = &#039;unknown&#039;;						-- standalone map or interview&lt;br /&gt;
				else&lt;br /&gt;
					OCinSoutput[&amp;quot;rft.genre&amp;quot;] = &#039;book&#039;;							-- book and encyclopedia&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else	--{&#039;audio-visual&#039;, &#039;AV-media-notes&#039;, &#039;DVD-notes&#039;, &#039;episode&#039;, &#039;interview&#039;, &#039;mailinglist&#039;, &#039;map&#039;, &#039;newsgroup&#039;, &#039;podcast&#039;, &#039;press release&#039;, &#039;serial&#039;, &#039;sign&#039;, &#039;speech&#039;, &#039;web&#039;}&lt;br /&gt;
			OCinSoutput[&amp;quot;rft.genre&amp;quot;] = &amp;quot;unknown&amp;quot;;&lt;br /&gt;
		end&lt;br /&gt;
		OCinSoutput[&amp;quot;rft.btitle&amp;quot;] = data.Title;									-- book only&lt;br /&gt;
		OCinSoutput[&amp;quot;rft.place&amp;quot;] = data.PublicationPlace;						-- book only&lt;br /&gt;
		OCinSoutput[&amp;quot;rft.series&amp;quot;] = data.Series;								-- book only&lt;br /&gt;
		OCinSoutput[&amp;quot;rft.pages&amp;quot;] = data.Pages;									-- book, journal&lt;br /&gt;
		OCinSoutput[&amp;quot;rft.edition&amp;quot;] = data.Edition;								-- book only&lt;br /&gt;
		OCinSoutput[&amp;quot;rft.pub&amp;quot;] = data.PublisherName;							-- book and dissertation&lt;br /&gt;
		&lt;br /&gt;
	else																		-- cite thesis&lt;br /&gt;
		OCinSoutput.rft_val_fmt = &amp;quot;info:ofi/fmt:kev:mtx:dissertation&amp;quot;;			-- dissertation metadata identifier&lt;br /&gt;
		OCinSoutput[&amp;quot;rft.title&amp;quot;] = data.Title;									-- dissertation (also patent but that is not yet supported)&lt;br /&gt;
		OCinSoutput[&amp;quot;rft.degree&amp;quot;] = data.Degree;								-- dissertation only&lt;br /&gt;
		OCinSoutput[&#039;rft.inst&#039;] = data.PublisherName;							-- book and dissertation&lt;br /&gt;
	end&lt;br /&gt;
																				-- and now common parameters (as much as possible)&lt;br /&gt;
	OCinSoutput[&amp;quot;rft.date&amp;quot;] = data.Date;										-- book, journal, dissertation&lt;br /&gt;
	&lt;br /&gt;
	for k, v in pairs( data.ID_list ) do										-- what to do about these? For now assume that they are common to all?&lt;br /&gt;
		if k == &#039;ISBN&#039; then v = clean_isbn( v ) end&lt;br /&gt;
		local id = cfg.id_handlers[k].COinS;&lt;br /&gt;
		if string.sub( id or &amp;quot;&amp;quot;, 1, 4 ) == &#039;info&#039; then							-- for ids that are in the info:registry&lt;br /&gt;
			OCinSoutput[&amp;quot;rft_id&amp;quot;] = table.concat{ id, &amp;quot;/&amp;quot;, v };&lt;br /&gt;
		elseif string.sub (id or &amp;quot;&amp;quot;, 1, 3 ) == &#039;rft&#039; then						-- for isbn, issn, eissn, etc that have defined COinS keywords&lt;br /&gt;
			OCinSoutput[ id ] = v;&lt;br /&gt;
		elseif id then															-- when cfg.id_handlers[k].COinS is not nil&lt;br /&gt;
			OCinSoutput[&amp;quot;rft_id&amp;quot;] = table.concat{ cfg.id_handlers[k].prefix, v };	-- others; provide a url&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--[[	&lt;br /&gt;
	for k, v in pairs( data.ID_list ) do										-- what to do about these? For now assume that they are common to all?&lt;br /&gt;
		local id, value = cfg.id_handlers[k].COinS;&lt;br /&gt;
		if k == &#039;ISBN&#039; then value = clean_isbn( v ); else value = v; end&lt;br /&gt;
		if string.sub( id or &amp;quot;&amp;quot;, 1, 4 ) == &#039;info&#039; then&lt;br /&gt;
			OCinSoutput[&amp;quot;rft_id&amp;quot;] = table.concat{ id, &amp;quot;/&amp;quot;, v };&lt;br /&gt;
		else&lt;br /&gt;
			OCinSoutput[ id ] = value;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
]]&lt;br /&gt;
	local last, first;&lt;br /&gt;
	for k, v in ipairs( data.Authors ) do&lt;br /&gt;
		last, first = coins_cleanup (v.last), coins_cleanup (v.first or &#039;&#039;);	-- replace any nowiki strip markers, non-printing or invisible characers&lt;br /&gt;
		if k == 1 then															-- for the first author name only&lt;br /&gt;
			if is_set(last)  and is_set(first) then								-- set these COinS values if |first= and |last= specify the first author name&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.aulast&amp;quot;] = last;								-- book, journal, dissertation&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.aufirst&amp;quot;] = first;								-- book, journal, dissertation&lt;br /&gt;
			elseif is_set(last) then &lt;br /&gt;
				OCinSoutput[&amp;quot;rft.au&amp;quot;] = last;									-- book, journal, dissertation -- otherwise use this form for the first name&lt;br /&gt;
			end&lt;br /&gt;
		else																	-- for all other authors&lt;br /&gt;
			if is_set(last) and is_set(first) then&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.au&amp;quot;] = table.concat{ last, &amp;quot;, &amp;quot;, first };		-- book, journal, dissertation&lt;br /&gt;
			elseif is_set(last) then&lt;br /&gt;
				OCinSoutput[&amp;quot;rft.au&amp;quot;] = last;									-- book, journal, dissertation&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	OCinSoutput.rft_id = data.URL;&lt;br /&gt;
	OCinSoutput.rfr_id = table.concat{ &amp;quot;info:sid/&amp;quot;, mw.site.server:match( &amp;quot;[^/]*$&amp;quot; ), &amp;quot;:&amp;quot;, data.RawPage };&lt;br /&gt;
	OCinSoutput = setmetatable( OCinSoutput, nil );&lt;br /&gt;
	&lt;br /&gt;
	-- sort with version string always first, and combine.&lt;br /&gt;
	table.sort( OCinSoutput );&lt;br /&gt;
	table.insert( OCinSoutput, 1, &amp;quot;ctx_ver=&amp;quot; .. ctx_ver );  -- such as &amp;quot;Z39.88-2004&amp;quot;&lt;br /&gt;
	return table.concat(OCinSoutput, &amp;quot;&amp;amp;&amp;quot;);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; G E T _ I S O 6 3 9 _ C O D E &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Validates language names provided in |language= parameter if not an ISO639-1 code.  Handles the special case that is Norwegian where&lt;br /&gt;
ISO639-1 code &#039;no&#039; is mapped to language name &#039;Norwegian Bokmål&#039; by Extention:CLDR.&lt;br /&gt;
&lt;br /&gt;
Returns the language name and associated ISO639-1 code.  Because case of the source may be incorrect or different from the case that Wikimedia&lt;br /&gt;
uses, the name comparisons are done in lower case and when a match is found, the Wikimedia version (assumed to be correct) is returned along&lt;br /&gt;
with the code.  When there is no match, we return the original language name string.&lt;br /&gt;
&lt;br /&gt;
mw.language.fetchLanguageNames() will return a list of languages that aren&#039;t part of ISO639-1. Names that aren&#039;t ISO639-1 but that are included&lt;br /&gt;
in the list will be found if that name is provided in the |language= parameter.  For example, if |language=Samaritan Aramaic, that name will be&lt;br /&gt;
found with the associated code &#039;sam&#039;, not an ISO639-1 code.  When names are found and the associated code is not two characters, this function&lt;br /&gt;
returns only the Wikimedia language name.&lt;br /&gt;
&lt;br /&gt;
Adapted from code taken from Module:Check ISO 639-1.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function get_iso639_code (lang)&lt;br /&gt;
	if &#039;norwegian&#039; == lang:lower() then											-- special case related to Wikimedia remap of code &#039;no&#039; at Extension:CLDR&lt;br /&gt;
		return &#039;Norwegian&#039;, &#039;no&#039;;												-- Make sure rendered version is properly capitalized&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local languages = mw.language.fetchLanguageNames(mw.getContentLanguage():getCode(), &#039;all&#039;)				-- get a list of language names known to Wikimedia&lt;br /&gt;
																				-- (&#039;all&#039; is required for North Ndebele, South Ndebele, and Ojibwa)&lt;br /&gt;
	local langlc = mw.ustring.lower(lang);										-- lower case version for comparisons&lt;br /&gt;
	&lt;br /&gt;
	for code, name in pairs(languages) do										-- scan the list to see if we can find our language&lt;br /&gt;
		if langlc == mw.ustring.lower(name) then&lt;br /&gt;
			if 2 ~= code:len() then												-- ISO639-1 codes only&lt;br /&gt;
				return name;													-- so return the name but not the code&lt;br /&gt;
			end&lt;br /&gt;
			return name, code;													-- found it, return name to ensure proper capitalization and the ISO639-1 code&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lang;																-- not valid language; return language in original case and nil for ISO639-1 code&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G U A G E _ P A R A M E T E R &amp;gt;------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Get language name from ISO639-1 code value provided.  If a code is valid use the returned name; if not, then use the value that was provided with the language parameter.&lt;br /&gt;
&lt;br /&gt;
There is an exception.  There are three ISO639-1 codes for Norewegian language variants.  There are two official variants: Norwegian Bokmål (code &#039;nb&#039;) and&lt;br /&gt;
Norwegian Nynorsk (code &#039;nn&#039;).  The third, code &#039;no&#039;,  is defined by ISO639-1 as &#039;Norwegian&#039; though in Norway this is pretty much meaningless.  However, it appears&lt;br /&gt;
that on enwiki, editors are for the most part unaware of the nb and nn variants (compare page counts for these variants at Category:Articles with non-English-language external links.&lt;br /&gt;
&lt;br /&gt;
Because Norwegian Bokmål is the most common language variant, Media wiki has been modified to return Norwegian Bokmål for ISO639-1 code &#039;no&#039;. Here we undo that and&lt;br /&gt;
return &#039;Norwegian&#039; when editors use |language=no.  We presume that editors don&#039;t know about the variants or can&#039;t descriminate between them.&lt;br /&gt;
&lt;br /&gt;
See Help talk:Citation Style_1#An ISO 639-1 language name test&lt;br /&gt;
&lt;br /&gt;
When |language= contains a valid ISO639-1 code, the page is assigned to the category for that code: Category:Norwegian-language sources (no) if&lt;br /&gt;
the page is a mainspace page and the ISO639-1 code is not &#039;en&#039;.  Similarly, if the  parameter is |language=Norwegian, it will be categorized in the same way.&lt;br /&gt;
&lt;br /&gt;
This function supports multiple languages in the form |language=nb, French, th where the language names or codes are separated from each other by commas.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function language_parameter (lang)&lt;br /&gt;
	local code;																	-- the ISO639-1 two character code&lt;br /&gt;
	local name;																	-- the language name&lt;br /&gt;
	local language_list = {};													-- table of language names to be rendered&lt;br /&gt;
	local names_table = {};														-- table made from the value assigned to |language=&lt;br /&gt;
&lt;br /&gt;
	names_table = mw.text.split (lang, &#039;%s*,%s*&#039;);								-- names should be a comma separated list&lt;br /&gt;
&lt;br /&gt;
	for _, lang in ipairs (names_table) do										-- reuse lang&lt;br /&gt;
&lt;br /&gt;
		if lang:match (&#039;^%a%a%-&#039;) or 2 == lang:len() then													-- ISO639-1 language code are 2 characters (fetchLanguageName also supports 3 character codes)&lt;br /&gt;
			if lang:match (&#039;^zh-&#039;) then&lt;br /&gt;
				name = mw.language.fetchLanguageName( lang:lower(), lang:lower() );&lt;br /&gt;
			else&lt;br /&gt;
				name = mw.language.fetchLanguageName( lang:lower(), mw.getContentLanguage():getCode() );			-- get ISO 639-1 language name if Language is a proper code&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if is_set (name) then													-- if Language specified a valid ISO639-1 code&lt;br /&gt;
			code = lang:lower();												-- save it&lt;br /&gt;
		else&lt;br /&gt;
			name, code = get_iso639_code (lang);								-- attempt to get code from name (assign name here so that we are sure of proper capitalization)&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if is_set (code) then&lt;br /&gt;
			if &#039;no&#039; == code then name = &#039;Norwegian&#039; end;						-- override wikimedia when code is &#039;no&#039;&lt;br /&gt;
			if &#039;zh&#039; ~= code and not code:match (&#039;^zh-&#039;) then												-- English not the language&lt;br /&gt;
				add_prop_cat (&#039;foreign_lang_source&#039;, {name, code})&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			add_maint_cat (&#039;unknown_lang&#039;);										-- add maint category if not already added&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert (language_list, name);&lt;br /&gt;
		name = &#039;&#039;;																-- so we can reuse it&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	code = #language_list														-- reuse code as number of languages in the list&lt;br /&gt;
	if 2 &amp;gt;= code then&lt;br /&gt;
		name = table.concat (language_list, &#039; and &#039;)							-- insert &#039;&amp;lt;space&amp;gt;and&amp;lt;space&amp;gt;&#039; between two language names&lt;br /&gt;
	elseif 2 &amp;lt; code then&lt;br /&gt;
		language_list[code] = &#039;and &#039; .. language_list[code];					-- prepend last name with &#039;and&amp;lt;space&amp;gt;&#039;&lt;br /&gt;
		name = table.concat (language_list, &#039;, &#039;)								-- and concatenate with &#039;&amp;lt;comma&amp;gt;&amp;lt;space&amp;gt;&#039; separators&lt;br /&gt;
	end&lt;br /&gt;
	return (&amp;quot; &amp;quot; .. wrap_msg (&#039;language&#039;, name));								-- otherwise wrap with &#039;(in ...)&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S E T _ C S 1 _ S T Y L E &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Set style settings for CS1 citation templates. Returns separator and postscript settings&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function set_cs1_style (ps)&lt;br /&gt;
	if not is_set (ps) then														-- unless explicitely set to something&lt;br /&gt;
		ps = &#039;.&#039;;																-- terminate the rendered citation with a period&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;.&#039;, ps;																-- separator is a full stop&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S E T _ C S 2 _ S T Y L E &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Set style settings for CS2 citation templates. Returns separator, postscript, ref settings&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function set_cs2_style (ps, ref)&lt;br /&gt;
	if not is_set (ps) then														-- if |postscript= has not been set, set cs2 default&lt;br /&gt;
		ps = &#039;&#039;;																-- make sure it isn&#039;t nil&lt;br /&gt;
	end&lt;br /&gt;
	if not is_set (ref) then													-- if |ref= is not set&lt;br /&gt;
		ref = &amp;quot;harv&amp;quot;;															-- set default |ref=harv&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;,&#039;, ps, ref;														-- separator is a comma&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; G E T _ S E T T I N G S _ F R O M _ C I T E _ C L A S S &amp;gt;----------------------&lt;br /&gt;
&lt;br /&gt;
When |mode= is not set or when its value is invalid, use config.CitationClass and parameter values to establish&lt;br /&gt;
rendered style.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function get_settings_from_cite_class (ps, ref, cite_class)&lt;br /&gt;
	local sep;&lt;br /&gt;
	if (cite_class == &amp;quot;citation&amp;quot;) then											-- for citation templates (CS2)&lt;br /&gt;
		sep, ps, ref = set_cs2_style (ps, ref);&lt;br /&gt;
	else																		-- not a citation template so CS1&lt;br /&gt;
		sep, ps = set_cs1_style (ps);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return sep, ps, ref															-- return them all&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S E T _ S T Y L E &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Establish basic style settings to be used when rendering the citation.  Uses |mode= if set and valid or uses&lt;br /&gt;
config.CitationClass from the template&#039;s #invoke: to establish style.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function set_style (mode, ps, ref, cite_class)&lt;br /&gt;
	local sep;&lt;br /&gt;
	if &#039;cs2&#039; == mode then														-- if this template is to be rendered in CS2 (citation) style&lt;br /&gt;
		sep, ps, ref = set_cs2_style (ps, ref);&lt;br /&gt;
	elseif &#039;cs1&#039; == mode then													-- if this template is to be rendered in CS1 (cite xxx) style&lt;br /&gt;
		sep, ps = set_cs1_style (ps);&lt;br /&gt;
	else																		-- anything but cs1 or cs2&lt;br /&gt;
		sep, ps, ref = get_settings_from_cite_class (ps, ref, cite_class);		-- get settings based on the template&#039;s CitationClass&lt;br /&gt;
	end&lt;br /&gt;
	if &#039;none&#039; == ps:lower() then												-- if assigned value is &#039;none&#039; then&lt;br /&gt;
		ps = &#039;&#039;;																-- set to empty string&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return sep, ps, ref&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; I S _ P D F &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Determines if a url has the file extension that is one of the pdf file extensions used by [[MediaWiki:Common.css]] when&lt;br /&gt;
applying the pdf icon to external links.&lt;br /&gt;
&lt;br /&gt;
returns true if file extension is one of the recognized extension, else false&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function is_pdf (url)&lt;br /&gt;
	return url:match (&#039;%.pdf[%?#]?&#039;) or url:match (&#039;%.PDF[%?#]?&#039;);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S T Y L E _ F O R M A T &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Applies css style to |format=, |chapter-format=, etc.  Also emits an error message if the format parameter does&lt;br /&gt;
not have a matching url parameter.  If the format parameter is not set and the url contains a file extension that&lt;br /&gt;
is recognized as a pdf document by MediaWiki&#039;s commons.css, this code will set the format parameter to (PDF) with&lt;br /&gt;
the appropriate styling.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function style_format (format, url, fmt_param, url_param)&lt;br /&gt;
	if is_set (format) then&lt;br /&gt;
		format = wrap_style (&#039;format&#039;, format);									-- add leading space, parenthases, resize&lt;br /&gt;
		if not is_set (url) then&lt;br /&gt;
			format = format .. set_error( &#039;format_missing_url&#039;, {fmt_param, url_param} );	-- add an error message&lt;br /&gt;
		end&lt;br /&gt;
	elseif is_pdf (url) then													-- format is not set so if url is a pdf file then&lt;br /&gt;
		format = wrap_style (&#039;format&#039;, &#039;PDF&#039;);									-- set format to pdf&lt;br /&gt;
	else&lt;br /&gt;
		format = &#039;&#039;;															-- empty string for concatenation&lt;br /&gt;
	end&lt;br /&gt;
	return format;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; G E T _ D I S P L A Y _ A U T H O R S _ E D I T O R S &amp;gt;------------------------&lt;br /&gt;
&lt;br /&gt;
Returns a number that may or may not limit the length of the author or editor name lists.&lt;br /&gt;
&lt;br /&gt;
When the value assigned to |display-authors= is a number greater than or equal to zero, return the number and&lt;br /&gt;
the previous state of the &#039;etal&#039; flag (false by default but may have been set to true if the name list contains&lt;br /&gt;
some variant of the text &#039;et al.&#039;).&lt;br /&gt;
&lt;br /&gt;
When the value assigned to |display-authors= is the keyword &#039;etal&#039;, return a number that is one greater than the&lt;br /&gt;
number of authors in the list and set the &#039;etal&#039; flag true.  This will cause the list_people() to display all of&lt;br /&gt;
the names in the name list followed by &#039;et al.&#039;&lt;br /&gt;
&lt;br /&gt;
In all other cases, returns nil and the previous state of the &#039;etal&#039; flag.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function get_display_authors_editors (max, count, list_name, etal)&lt;br /&gt;
	if is_set (max) then&lt;br /&gt;
		if &#039;etal&#039; == max:lower():gsub(&amp;quot;[ &#039;%.]&amp;quot;, &#039;&#039;) then						-- the :gsub() portion makes &#039;etal&#039; from a variety of &#039;et al.&#039; spellings and stylings&lt;br /&gt;
			max = count + 1;													-- number of authors + 1 so display all author name plus et al.&lt;br /&gt;
			etal = true;														-- overrides value set by extract_names()&lt;br /&gt;
		elseif max:match (&#039;^%d+$&#039;) then											-- if is a string of numbers&lt;br /&gt;
			max = tonumber (max);												-- make it a number&lt;br /&gt;
			if max &amp;gt;= count and &#039;authors&#039; == list_name then	-- AUTHORS ONLY		-- if |display-xxxxors= value greater than or equal to number of authors/editors&lt;br /&gt;
				add_maint_cat (&#039;disp_auth_ed&#039;, list_name);&lt;br /&gt;
			end&lt;br /&gt;
		else																	-- not a valid keyword or number&lt;br /&gt;
			table.insert( z.message_tail, { set_error( &#039;invalid_param_val&#039;, {&#039;display-&#039; .. list_name, max}, true ) } );		-- add error message&lt;br /&gt;
			max = nil;															-- unset&lt;br /&gt;
		end&lt;br /&gt;
	elseif &#039;authors&#039; == list_name then		-- AUTHORS ONLY	need to clear implicit et al category&lt;br /&gt;
		max = count + 1;														-- number of authors + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return max, etal;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X T R A _ T E X T _ I N _ P A G E _ C H E C K &amp;gt;------------------------------&lt;br /&gt;
&lt;br /&gt;
Adds page to Category:CS1 maint: extra text if |page= or |pages= has what appears to be some form of p. or pp. &lt;br /&gt;
abbreviation in the first characters of the parameter content.&lt;br /&gt;
&lt;br /&gt;
check Page and Pages for extraneous p, p., pp, and pp. at start of parameter value:&lt;br /&gt;
	good pattern: &#039;^P[^%.P%l]&#039; matches when |page(s)= begins PX or P# but not Px where x and X are letters and # is a dgiit&lt;br /&gt;
	bad pattern: &#039;^[Pp][Pp]&#039; matches matches when |page(s)= begins pp or pP or Pp or PP&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function extra_text_in_page_check (page)&lt;br /&gt;
--	local good_pattern = &#039;^P[^%.P%l]&#039;;&lt;br /&gt;
	local good_pattern = &#039;^P[^%.Pp]&#039;;											-- ok to begin with uppercase P: P7 (pg 7 of section P) but not p123 (page 123) TODO: add Gg for PG or Pg?&lt;br /&gt;
--	local bad_pattern = &#039;^[Pp][Pp]&#039;;&lt;br /&gt;
	local bad_pattern = &#039;^[Pp]?[Pp]%.?[ %d]&#039;;&lt;br /&gt;
&lt;br /&gt;
	if not page:match (good_pattern) and (page:match (bad_pattern) or  page:match (&#039;^[Pp]ages?&#039;)) then&lt;br /&gt;
		add_maint_cat (&#039;extra_text&#039;);&lt;br /&gt;
	end&lt;br /&gt;
--		if Page:match (&#039;^[Pp]?[Pp]%.?[ %d]&#039;) or  Page:match (&#039;^[Pp]ages?[ %d]&#039;) or&lt;br /&gt;
--			Pages:match (&#039;^[Pp]?[Pp]%.?[ %d]&#039;) or  Pages:match (&#039;^[Pp]ages?[ %d]&#039;) then&lt;br /&gt;
--				add_maint_cat (&#039;extra_text&#039;);&lt;br /&gt;
--		end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; P A R S E _ V A U T H O R S _ V E D I T O R S &amp;gt;--------------------------------&lt;br /&gt;
&lt;br /&gt;
This function extracts author / editor names from |vauthors= or |veditors= and finds matching |xxxxor-maskn= and&lt;br /&gt;
|xxxxor-linkn= in args.  It then returns a table of assembled names just as extract_names() does.&lt;br /&gt;
&lt;br /&gt;
Author / editor names in |vauthors= or |veditors= must be in Vancouver system style. Corporate or institutional names&lt;br /&gt;
may sometimes be required and because such names will often fail the is_good_vanc_name() and other format compliance&lt;br /&gt;
tests, are wrapped in doubled paranethese ((corporate name)) to suppress the format tests.&lt;br /&gt;
&lt;br /&gt;
This function sets the vancouver error when a reqired comma is missing and when there is a space between an author&#039;s initials.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function parse_vauthors_veditors (args, vparam, list_name)&lt;br /&gt;
	local names = {};															-- table of names assembled from |vauthors=, |author-maskn=, |author-linkn=&lt;br /&gt;
	local v_name_table = {};&lt;br /&gt;
	local etal = false;															-- return value set to true when we find some form of et al. vauthors parameter&lt;br /&gt;
	local last, first, link, mask;&lt;br /&gt;
	local corporate = false;&lt;br /&gt;
&lt;br /&gt;
	vparam, etal = name_has_etal (vparam, etal, true);							-- find and remove variations on et al. do not categorize (do it here because et al. might have a period)&lt;br /&gt;
	if vparam:find (&#039;%[%[&#039;) or vparam:find (&#039;%]%]&#039;)	then						-- no wikilinking vauthors names&lt;br /&gt;
		add_vanc_error ();&lt;br /&gt;
	end&lt;br /&gt;
	v_name_table = mw.text.split(vparam, &amp;quot;%s*,%s*&amp;quot;)								-- names are separated by commas&lt;br /&gt;
&lt;br /&gt;
	for i, v_name in ipairs(v_name_table) do&lt;br /&gt;
		if v_name:match (&#039;^%(%(.+%)%)$&#039;) then									-- corporate authors are wrapped in doubled parenthese to supress vanc formatting and error detection&lt;br /&gt;
			first = &#039;&#039;;															-- set to empty string for concatenation and because it may have been set for previous author/editor&lt;br /&gt;
			last = v_name:match (&#039;^%(%((.+)%)%)$&#039;)&lt;br /&gt;
			corporate = true;&lt;br /&gt;
		elseif string.find(v_name, &amp;quot;%s&amp;quot;) then&lt;br /&gt;
		    lastfirstTable = {}&lt;br /&gt;
		    lastfirstTable = mw.text.split(v_name, &amp;quot;%s&amp;quot;)&lt;br /&gt;
		    first = table.remove(lastfirstTable);								-- removes and returns value of last element in table which should be author intials&lt;br /&gt;
		    last  = table.concat(lastfirstTable, &amp;quot; &amp;quot;)							-- returns a string that is the concatenation of all other names that are not initials&lt;br /&gt;
		    if mw.ustring.match (last, &#039;%a+%s+%u+%s+%a+&#039;) or mw.ustring.match (v_name, &#039; %u %u$&#039;) then&lt;br /&gt;
				add_vanc_error ();												-- matches last II last; the case when a comma is missing or a space between two intiials&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			first = &#039;&#039;;															-- set to empty string for concatenation and because it may have been set for previous author/editor&lt;br /&gt;
			last = v_name;														-- last name or single corporate name?  Doesn&#039;t support multiword corporate names? do we need this?&lt;br /&gt;
		end&lt;br /&gt;
																&lt;br /&gt;
		if is_set (first) and not mw.ustring.match (first, &amp;quot;^%u?%u$&amp;quot;) then		-- first shall contain one or two upper-case letters, nothing else&lt;br /&gt;
			add_vanc_error ();&lt;br /&gt;
		end&lt;br /&gt;
																				-- this from extract_names ()&lt;br /&gt;
		link = select_one( args, cfg.aliases[list_name .. &#039;-Link&#039;], &#039;redundant_parameters&#039;, i );&lt;br /&gt;
		mask = select_one( args, cfg.aliases[list_name .. &#039;-Mask&#039;], &#039;redundant_parameters&#039;, i );&lt;br /&gt;
		names[i] = {last = last, first = first, link = link, mask = mask, corporate=corporate};		-- add this assembled name to our names list&lt;br /&gt;
	end&lt;br /&gt;
	return names, etal;															-- all done, return our list of names&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S E L E C T _ A U T H O R _ E D I T O R _ S O U R C E &amp;gt;------------------------&lt;br /&gt;
&lt;br /&gt;
Select one of |authors=, |authorn= / |lastn / firstn=, or |vauthors= as the source of the author name list or&lt;br /&gt;
select one of |editors=, |editorn= / editor-lastn= / |editor-firstn= or |veditors= as the source of the editor name list.&lt;br /&gt;
&lt;br /&gt;
Only one of these appropriate three will be used.  The hierarchy is: |authorn= (and aliases) highest and |authors= lowest and&lt;br /&gt;
similarly, |editorn= (and aliases) highest and |editors= lowest&lt;br /&gt;
&lt;br /&gt;
When looking for |authorn= / |editorn= parameters, test |xxxxor1= and |xxxxor2= (and all of their aliases); stops after the second&lt;br /&gt;
test which mimicks the test used in extract_names() when looking for a hole in the author name list.  There may be a better&lt;br /&gt;
way to do this, I just haven&#039;t discovered what that way is.&lt;br /&gt;
&lt;br /&gt;
Emits an error message when more than one xxxxor name source is provided.&lt;br /&gt;
&lt;br /&gt;
In this function, vxxxxors = vauthors or veditors; xxxxors = authors or editors as appropriate.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function select_author_editor_source (vxxxxors, xxxxors, args, list_name)&lt;br /&gt;
local lastfirst = false;&lt;br /&gt;
	if select_one( args, cfg.aliases[list_name .. &#039;-Last&#039;], &#039;none&#039;, 1 ) or		-- do this twice incase we have a first 1 without a last1&lt;br /&gt;
		select_one( args, cfg.aliases[list_name .. &#039;-Last&#039;], &#039;none&#039;, 2 ) then&lt;br /&gt;
			lastfirst=true;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (is_set (vxxxxors) and true == lastfirst) or								-- these are the three error conditions&lt;br /&gt;
		(is_set (vxxxxors) and is_set (xxxxors)) or&lt;br /&gt;
		(true == lastfirst and is_set (xxxxors)) then&lt;br /&gt;
			local err_name;&lt;br /&gt;
			if &#039;AuthorList&#039; == list_name then									-- figure out which name should be used in error message&lt;br /&gt;
				err_name = &#039;author&#039;;&lt;br /&gt;
			else&lt;br /&gt;
				err_name = &#039;editor&#039;;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( z.message_tail, { set_error( &#039;redundant_parameters&#039;,&lt;br /&gt;
				{err_name .. &#039;-name-list parameters&#039;}, true ) } );				-- add error message&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if true == lastfirst then return 1 end;										-- return a number indicating which author name source to use&lt;br /&gt;
	if is_set (vxxxxors) then return 2 end;&lt;br /&gt;
	if is_set (xxxxors) then return 3 end;&lt;br /&gt;
	return 1;																	-- no authors so return 1; this allows missing author name test to run in case there is a first without last &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ V A L I D _ P A R A M E T E R _ V A L U E &amp;gt;------------------------------&lt;br /&gt;
&lt;br /&gt;
This function is used to validate a parameter&#039;s assigned value for those parameters that have only a limited number&lt;br /&gt;
of allowable values (yes, y, true, no, etc).  When the parameter value has not been assigned a value (missing or empty&lt;br /&gt;
in the source template) the function refurns true.  If the parameter value is one of the list of allowed values returns&lt;br /&gt;
true; else, emits an error message and returns false.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_valid_parameter_value (value, name, possible)&lt;br /&gt;
	if not is_set (value) then&lt;br /&gt;
		return true;															-- an empty parameter is ok&lt;br /&gt;
	elseif in_array(value:lower(), possible) then&lt;br /&gt;
		return true;&lt;br /&gt;
	else&lt;br /&gt;
		table.insert( z.message_tail, { set_error( &#039;invalid_param_val&#039;, {name, value}, true ) } );	-- not an allowed value so add error message&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E R M I N A T E _ N A M E _ L I S T &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
This function terminates a name list (author, contributor, editor) with a separator character (sepc) and a space&lt;br /&gt;
when the last character is not a sepc character or when the last three characters are not sepc followed by two&lt;br /&gt;
closing square brackets (close of a wikilink).  When either of these is true, the name_list is terminated with a&lt;br /&gt;
single space character.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function terminate_name_list (name_list, sepc)&lt;br /&gt;
	if (string.sub (name_list,-1,-1) == sepc) or (string.sub (name_list,-3,-1) == sepc .. &#039;]]&#039;) then	-- if last name in list ends with sepc char&lt;br /&gt;
		return name_list .. &amp;quot; &amp;quot;;												-- don&#039;t add another&lt;br /&gt;
	else&lt;br /&gt;
		return name_list .. sepc .. &#039; &#039;;										-- otherwise terninate the name list&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[-------------------------&amp;lt; F O R M A T _ V O L U M E _ I S S U E &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns the concatenation of the formatted volume and issue parameters as a single string; or formatted volume&lt;br /&gt;
or formatted issue, or an empty string if neither are set.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
	&lt;br /&gt;
local function format_volume_issue (volume, issue, cite_class, origin, sepc, lower)&lt;br /&gt;
	if not is_set (volume) and not is_set (issue) then&lt;br /&gt;
		return &#039;&#039;;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if &#039;magazine&#039; == cite_class or (in_array (cite_class, {&#039;citation&#039;, &#039;map&#039;}) and &#039;magazine&#039; == origin) then&lt;br /&gt;
		if is_set (volume) and is_set (issue) then&lt;br /&gt;
			return wrap_msg (&#039;vol-no&#039;, {sepc, volume, issue}, lower);&lt;br /&gt;
		elseif is_set (volume) then&lt;br /&gt;
			return wrap_msg (&#039;vol&#039;, {sepc, volume}, lower);&lt;br /&gt;
		else&lt;br /&gt;
			return wrap_msg (&#039;issue&#039;, {sepc, issue}, lower);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local vol = &#039;&#039;;&lt;br /&gt;
		&lt;br /&gt;
	if is_set (volume) then&lt;br /&gt;
		if (6 &amp;lt; mw.ustring.len(volume)) then&lt;br /&gt;
			vol = substitute (cfg.messages[&#039;j-vol&#039;], {sepc, volume});&lt;br /&gt;
		else&lt;br /&gt;
			vol = wrap_style (&#039;vol-bold&#039;, hyphen_to_dash(volume));&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if is_set (issue) then&lt;br /&gt;
		return vol .. substitute (cfg.messages[&#039;j-issue&#039;], issue);&lt;br /&gt;
	end&lt;br /&gt;
	return vol;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[-------------------------&amp;lt; F O R M A T _ P A G E S _ S H E E T S &amp;gt;-----------------------------------------&lt;br /&gt;
&lt;br /&gt;
adds static text to one of |page(s)= or |sheet(s)= values and returns it with all of the others set to empty strings.&lt;br /&gt;
The return order is:&lt;br /&gt;
	page, pages, sheet, sheets&lt;br /&gt;
&lt;br /&gt;
Singular has priority over plural when both are provided.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function format_pages_sheets (page, pages, sheet, sheets, cite_class, origin, sepc, nopp, lower)&lt;br /&gt;
	if &#039;map&#039; == cite_class then													-- only cite map supports sheet(s) as in-source locators&lt;br /&gt;
		if is_set (sheet) then&lt;br /&gt;
			if &#039;journal&#039; == origin then&lt;br /&gt;
				return &#039;&#039;, &#039;&#039;, wrap_msg (&#039;j-sheet&#039;, sheet, lower), &#039;&#039;;&lt;br /&gt;
			else&lt;br /&gt;
				return &#039;&#039;, &#039;&#039;, wrap_msg (&#039;sheet&#039;, {sepc, sheet}, lower), &#039;&#039;;&lt;br /&gt;
			end&lt;br /&gt;
		elseif is_set (sheets) then&lt;br /&gt;
			if &#039;journal&#039; == origin then&lt;br /&gt;
				return &#039;&#039;, &#039;&#039;, &#039;&#039;, wrap_msg (&#039;j-sheets&#039;, sheets, lower);&lt;br /&gt;
			else&lt;br /&gt;
				return &#039;&#039;, &#039;&#039;, &#039;&#039;, wrap_msg (&#039;sheets&#039;, {sepc, sheets}, lower);&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local is_journal = &#039;journal&#039; == cite_class or (in_array (cite_class, {&#039;citation&#039;, &#039;map&#039;}) and &#039;journal&#039; == origin);&lt;br /&gt;
&lt;br /&gt;
	if is_set (page) then&lt;br /&gt;
		if is_journal then&lt;br /&gt;
			return substitute (cfg.messages[&#039;j-page(s)&#039;], page), &#039;&#039;, &#039;&#039;, &#039;&#039;;&lt;br /&gt;
		elseif not nopp then&lt;br /&gt;
			return substitute (cfg.messages[&#039;p-prefix&#039;], {sepc, page}), &#039;&#039;, &#039;&#039;, &#039;&#039;;&lt;br /&gt;
		else&lt;br /&gt;
			return substitute (cfg.messages[&#039;nopp&#039;], {sepc, page}), &#039;&#039;, &#039;&#039;, &#039;&#039;;&lt;br /&gt;
		end&lt;br /&gt;
	elseif is_set(pages) then&lt;br /&gt;
		if is_journal then&lt;br /&gt;
			return substitute (cfg.messages[&#039;j-page(s)&#039;], pages), &#039;&#039;, &#039;&#039;, &#039;&#039;;&lt;br /&gt;
		elseif tonumber(pages) ~= nil and not nopp then										-- if pages is only digits, assume a single page number&lt;br /&gt;
			return &#039;&#039;, substitute (cfg.messages[&#039;p-prefix&#039;], {sepc, pages}), &#039;&#039;, &#039;&#039;;&lt;br /&gt;
		elseif not nopp then&lt;br /&gt;
			return &#039;&#039;, substitute (cfg.messages[&#039;pp-prefix&#039;], {sepc, pages}), &#039;&#039;, &#039;&#039;;&lt;br /&gt;
		else&lt;br /&gt;
			return &#039;&#039;, substitute (cfg.messages[&#039;nopp&#039;], {sepc, pages}), &#039;&#039;, &#039;&#039;;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;;														-- return empty strings&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C I T A T I O N 0 &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This is the main function doing the majority of the citation formatting.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function citation0( config, args)&lt;br /&gt;
	--[[ &lt;br /&gt;
	Load Input Parameters&lt;br /&gt;
	The argument_wrapper facilitates the mapping of multiple aliases to single internal variable.&lt;br /&gt;
	]]&lt;br /&gt;
	local A = argument_wrapper( args );&lt;br /&gt;
	local i &lt;br /&gt;
&lt;br /&gt;
	-- Pick out the relevant fields from the arguments.  Different citation templates&lt;br /&gt;
	-- define different field names for the same underlying things.	&lt;br /&gt;
	local author_etal;&lt;br /&gt;
	local a	= {};																-- authors list from |lastn= / |firstn= pairs or |vauthors=&lt;br /&gt;
	local Authors;&lt;br /&gt;
	local NameListFormat = A[&#039;NameListFormat&#039;];&lt;br /&gt;
&lt;br /&gt;
	do																			-- to limit scope of selected&lt;br /&gt;
		local selected = select_author_editor_source (A[&#039;Vauthors&#039;], A[&#039;Authors&#039;], args, &#039;AuthorList&#039;);&lt;br /&gt;
		if 1 == selected then&lt;br /&gt;
			a, author_etal = extract_names (args, &#039;AuthorList&#039;);				-- fetch author list from |authorn= / |lastn= / |firstn=, |author-linkn=, and |author-maskn=&lt;br /&gt;
		elseif 2 == selected then&lt;br /&gt;
			NameListFormat = &#039;vanc&#039;;											-- override whatever |name-list-format= might be&lt;br /&gt;
			a, author_etal = parse_vauthors_veditors (args, args.vauthors, &#039;AuthorList&#039;);	-- fetch author list from |vauthors=, |author-linkn=, and |author-maskn=&lt;br /&gt;
		elseif 3 == selected then&lt;br /&gt;
			Authors = A[&#039;Authors&#039;];												-- use content of |authors=&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local Coauthors = A[&#039;Coauthors&#039;];&lt;br /&gt;
	local Others = A[&#039;Others&#039;];&lt;br /&gt;
&lt;br /&gt;
	local editor_etal;&lt;br /&gt;
	local e	= {};																-- editors list from |editor-lastn= / |editor-firstn= pairs or |veditors=&lt;br /&gt;
	local Editors;&lt;br /&gt;
&lt;br /&gt;
	do																			-- to limit scope of selected&lt;br /&gt;
		local selected = select_author_editor_source (A[&#039;Veditors&#039;], A[&#039;Editors&#039;], args, &#039;EditorList&#039;);&lt;br /&gt;
		if 1 == selected then&lt;br /&gt;
			e, editor_etal = extract_names (args, &#039;EditorList&#039;);				-- fetch editor list from |editorn= / |editor-lastn= / |editor-firstn=, |editor-linkn=, and |editor-maskn=&lt;br /&gt;
		elseif 2 == selected then&lt;br /&gt;
			NameListFormat = &#039;vanc&#039;;											-- override whatever |name-list-format= might be&lt;br /&gt;
			e, editor_etal = parse_vauthors_veditors (args, args.veditors, &#039;EditorList&#039;);	-- fetch editor list from |veditors=, |editor-linkn=, and |editor-maskn=&lt;br /&gt;
		elseif 3 == selected then&lt;br /&gt;
			Editors = A[&#039;Editors&#039;];												-- use content of |editors=&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local t = {};																-- translators list from |translator-lastn= / translator-firstn= pairs&lt;br /&gt;
	local Translators;															-- assembled translators name list&lt;br /&gt;
	t = extract_names (args, &#039;TranslatorList&#039;);									-- fetch translator list from |translatorn= / |translator-lastn=, -firstn=, -linkn=, -maskn=&lt;br /&gt;
	&lt;br /&gt;
	local c = {};																-- contributors list from |contributor-lastn= / contributor-firstn= pairs&lt;br /&gt;
	local Contributors;															-- assembled contributors name list&lt;br /&gt;
	local Contribution = A[&#039;Contribution&#039;];&lt;br /&gt;
	if in_array(config.CitationClass, {&amp;quot;book&amp;quot;,&amp;quot;citation&amp;quot;}) and not is_set(A[&#039;Periodical&#039;]) then	-- |contributor= and |contribution= only supported in book cites&lt;br /&gt;
		c = extract_names (args, &#039;ContributorList&#039;);							-- fetch contributor list from |contributorn= / |contributor-lastn=, -firstn=, -linkn=, -maskn=&lt;br /&gt;
		&lt;br /&gt;
		if 0 &amp;lt; #c then&lt;br /&gt;
			if not is_set (Contribution) then									-- |contributor= requires |contribution=&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;contributor_missing_required_param&#039;, &#039;contribution&#039;)});	-- add missing contribution error message&lt;br /&gt;
				c = {};															-- blank the contributors&#039; table; it is used as a flag later&lt;br /&gt;
			end&lt;br /&gt;
			if 0 == #a then														-- |contributor= requires |author=&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;contributor_missing_required_param&#039;, &#039;author&#039;)});	-- add missing author error message&lt;br /&gt;
				c = {};															-- blank the contributors&#039; table; it is used as a flag later&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else																		-- if not a book cite&lt;br /&gt;
		if select_one (args, cfg.aliases[&#039;ContributorList-Last&#039;], &#039;redundant_parameters&#039;, 1 ) then	-- are there contributor name list parameters?&lt;br /&gt;
			table.insert( z.message_tail, { set_error( &#039;contributor_ignored&#039;)});	-- add contributor ignored error message&lt;br /&gt;
		end&lt;br /&gt;
		Contribution = nil;														-- unset&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not is_valid_parameter_value (NameListFormat, &#039;name-list-format&#039;, cfg.keywords[&#039;name-list-format&#039;]) then			-- only accepted value for this parameter is &#039;vanc&#039;&lt;br /&gt;
		NameListFormat = &#039;&#039;;													-- anything else, set to empty string&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local Year = A[&#039;Year&#039;];&lt;br /&gt;
	local PublicationDate = A[&#039;PublicationDate&#039;];&lt;br /&gt;
	local OrigYear = A[&#039;OrigYear&#039;];&lt;br /&gt;
	local Date = A[&#039;Date&#039;];&lt;br /&gt;
	local LayDate = A[&#039;LayDate&#039;];&lt;br /&gt;
	------------------------------------------------- Get title data&lt;br /&gt;
	local Title = A[&#039;Title&#039;];&lt;br /&gt;
	local ScriptTitle = A[&#039;ScriptTitle&#039;];&lt;br /&gt;
	local BookTitle = A[&#039;BookTitle&#039;];&lt;br /&gt;
	local Conference = A[&#039;Conference&#039;];&lt;br /&gt;
	local TransTitle = A[&#039;TransTitle&#039;];&lt;br /&gt;
	local TitleNote = A[&#039;TitleNote&#039;];&lt;br /&gt;
	local TitleLink = A[&#039;TitleLink&#039;];&lt;br /&gt;
		if is_set (TitleLink) and false == link_param_ok (TitleLink) then&lt;br /&gt;
			table.insert( z.message_tail, { set_error( &#039;bad_paramlink&#039;, A:ORIGIN(&#039;TitleLink&#039;))});		-- url or wikilink in |title-link=;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	local Chapter = A[&#039;Chapter&#039;];&lt;br /&gt;
	local ScriptChapter = A[&#039;ScriptChapter&#039;];&lt;br /&gt;
	local ChapterLink	-- = A[&#039;ChapterLink&#039;];									-- deprecated as a parameter but still used internally by cite episode&lt;br /&gt;
	local TransChapter = A[&#039;TransChapter&#039;];&lt;br /&gt;
	local TitleType = A[&#039;TitleType&#039;];&lt;br /&gt;
	local Degree = A[&#039;Degree&#039;];&lt;br /&gt;
	local Docket = A[&#039;Docket&#039;];&lt;br /&gt;
	local ArchiveFormat = A[&#039;ArchiveFormat&#039;];&lt;br /&gt;
	local ArchiveURL = A[&#039;ArchiveURL&#039;];&lt;br /&gt;
	local URL = A[&#039;URL&#039;]&lt;br /&gt;
	local URLorigin = A:ORIGIN(&#039;URL&#039;);											-- get name of parameter that holds URL&lt;br /&gt;
	local ChapterURL = A[&#039;ChapterURL&#039;];&lt;br /&gt;
	local ChapterURLorigin = A:ORIGIN(&#039;ChapterURL&#039;);							-- get name of parameter that holds ChapterURL&lt;br /&gt;
	local ConferenceFormat = A[&#039;ConferenceFormat&#039;];&lt;br /&gt;
	local ConferenceURL = A[&#039;ConferenceURL&#039;];&lt;br /&gt;
	local ConferenceURLorigin = A:ORIGIN(&#039;ConferenceURL&#039;);						-- get name of parameter that holds ConferenceURL&lt;br /&gt;
	local Periodical = A[&#039;Periodical&#039;];&lt;br /&gt;
	local Periodical_origin = A:ORIGIN(&#039;Periodical&#039;);							-- get the name of the periodical parameter&lt;br /&gt;
&lt;br /&gt;
	local Series = A[&#039;Series&#039;];&lt;br /&gt;
	&lt;br /&gt;
	local Volume;&lt;br /&gt;
	local Issue;&lt;br /&gt;
	local Page;&lt;br /&gt;
	local Pages;&lt;br /&gt;
	local At;&lt;br /&gt;
&lt;br /&gt;
	if in_array (config.CitationClass, cfg.templates_using_volume) and not (&#039;conference&#039; == config.CitationClass and not is_set (Periodical)) then&lt;br /&gt;
		Volume = A[&#039;Volume&#039;];&lt;br /&gt;
	end&lt;br /&gt;
	if in_array (config.CitationClass, cfg.templates_using_issue) and not (in_array (config.CitationClass, {&#039;conference&#039;, &#039;map&#039;}) and not is_set (Periodical))then&lt;br /&gt;
		Issue = A[&#039;Issue&#039;];&lt;br /&gt;
	end&lt;br /&gt;
	local Position = &#039;&#039;;&lt;br /&gt;
	if not in_array (config.CitationClass, cfg.templates_not_using_page) then&lt;br /&gt;
		Page = A[&#039;Page&#039;];&lt;br /&gt;
		Pages = hyphen_to_dash( A[&#039;Pages&#039;] );	&lt;br /&gt;
		At = A[&#039;At&#039;];&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local Edition = A[&#039;Edition&#039;];&lt;br /&gt;
	local PublicationPlace = A[&#039;PublicationPlace&#039;]&lt;br /&gt;
	local Place = A[&#039;Place&#039;];&lt;br /&gt;
	&lt;br /&gt;
	local PublisherName = A[&#039;PublisherName&#039;];&lt;br /&gt;
	local RegistrationRequired = A[&#039;RegistrationRequired&#039;];&lt;br /&gt;
		if not is_valid_parameter_value (RegistrationRequired, &#039;registration&#039;, cfg.keywords [&#039;yes_true_y&#039;]) then&lt;br /&gt;
			RegistrationRequired=nil;&lt;br /&gt;
		end&lt;br /&gt;
	local SubscriptionRequired = A[&#039;SubscriptionRequired&#039;];&lt;br /&gt;
		if not is_valid_parameter_value (SubscriptionRequired, &#039;subscription&#039;, cfg.keywords [&#039;yes_true_y&#039;]) then&lt;br /&gt;
			SubscriptionRequired=nil;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	local Via = A[&#039;Via&#039;];&lt;br /&gt;
	local AccessDate = A[&#039;AccessDate&#039;];&lt;br /&gt;
	local ArchiveDate = A[&#039;ArchiveDate&#039;];&lt;br /&gt;
	local Agency = A[&#039;Agency&#039;];&lt;br /&gt;
	local DeadURL = A[&#039;DeadURL&#039;]&lt;br /&gt;
		if not is_valid_parameter_value (DeadURL, &#039;dead-url&#039;, cfg.keywords [&#039;deadurl&#039;]) then	-- set in config.defaults to &#039;yes&#039;&lt;br /&gt;
			DeadURL = &#039;&#039;;														-- anything else, set to empty string&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	local Language = A[&#039;Language&#039;];&lt;br /&gt;
	local Format = A[&#039;Format&#039;];&lt;br /&gt;
	local ChapterFormat = A[&#039;ChapterFormat&#039;];&lt;br /&gt;
	local DoiBroken = A[&#039;DoiBroken&#039;];&lt;br /&gt;
	local ID = A[&#039;ID&#039;];&lt;br /&gt;
	local ASINTLD = A[&#039;ASINTLD&#039;];&lt;br /&gt;
	local IgnoreISBN = A[&#039;IgnoreISBN&#039;];&lt;br /&gt;
		if not is_valid_parameter_value (IgnoreISBN, &#039;ignore-isbn-error&#039;, cfg.keywords [&#039;yes_true_y&#039;]) then&lt;br /&gt;
			IgnoreISBN = nil;													-- anything else, set to empty string&lt;br /&gt;
		end&lt;br /&gt;
	local Embargo = A[&#039;Embargo&#039;];&lt;br /&gt;
	local Class = A[&#039;Class&#039;];													-- arxiv class identifier&lt;br /&gt;
&lt;br /&gt;
	local ID_list = extract_ids( args );&lt;br /&gt;
&lt;br /&gt;
	local Quote = A[&#039;Quote&#039;];&lt;br /&gt;
&lt;br /&gt;
	local LayFormat = A[&#039;LayFormat&#039;];&lt;br /&gt;
	local LayURL = A[&#039;LayURL&#039;];&lt;br /&gt;
	local LaySource = A[&#039;LaySource&#039;];&lt;br /&gt;
	local Transcript = A[&#039;Transcript&#039;];&lt;br /&gt;
	local TranscriptFormat = A[&#039;TranscriptFormat&#039;];&lt;br /&gt;
	local TranscriptURL = A[&#039;TranscriptURL&#039;] &lt;br /&gt;
	local TranscriptURLorigin = A:ORIGIN(&#039;TranscriptURL&#039;);						-- get name of parameter that holds TranscriptURL&lt;br /&gt;
&lt;br /&gt;
	local LastAuthorAmp = A[&#039;LastAuthorAmp&#039;];&lt;br /&gt;
		if not is_valid_parameter_value (LastAuthorAmp, &#039;last-author-amp&#039;, cfg.keywords [&#039;yes_true_y&#039;]) then&lt;br /&gt;
			LastAuthorAmp = nil;													-- set to empty string&lt;br /&gt;
		end&lt;br /&gt;
	local no_tracking_cats = A[&#039;NoTracking&#039;];&lt;br /&gt;
		if not is_valid_parameter_value (no_tracking_cats, &#039;no-tracking&#039;, cfg.keywords [&#039;yes_true_y&#039;]) then&lt;br /&gt;
			no_tracking_cats = nil;												-- set to empty string&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
--these are used by cite interview&lt;br /&gt;
	local Callsign = A[&#039;Callsign&#039;];&lt;br /&gt;
	local City = A[&#039;City&#039;];&lt;br /&gt;
	local Program = A[&#039;Program&#039;];&lt;br /&gt;
&lt;br /&gt;
--local variables that are not cs1 parameters&lt;br /&gt;
	local use_lowercase;														-- controls capitalization of certain static text&lt;br /&gt;
	local this_page = mw.title.getCurrentTitle();								-- also used for COinS and for language&lt;br /&gt;
	local anchor_year;															-- used in the CITEREF identifier&lt;br /&gt;
	local COinS_date = {};														-- holds date info extracted from |date= for the COinS metadata by Module:Date verification&lt;br /&gt;
&lt;br /&gt;
-- set default parameter values defined by |mode= parameter.  If |mode= is empty or omitted, use CitationClass to set these values&lt;br /&gt;
	local Mode = A[&#039;Mode&#039;];&lt;br /&gt;
	if not is_valid_parameter_value (Mode, &#039;mode&#039;, cfg.keywords[&#039;mode&#039;]) then&lt;br /&gt;
		Mode = &#039;&#039;;&lt;br /&gt;
	end&lt;br /&gt;
	local sepc;											-- separator between citation elements for CS1 a period, for CS2, a comma&lt;br /&gt;
	local PostScript;&lt;br /&gt;
	local Ref;&lt;br /&gt;
	sepc, PostScript, Ref = set_style (Mode:lower(), A[&#039;PostScript&#039;], A[&#039;Ref&#039;], config.CitationClass);&lt;br /&gt;
	use_lowercase = ( sepc == &#039;,&#039; );					-- used to control capitalization for certain static text&lt;br /&gt;
&lt;br /&gt;
--check this page to see if it is in one of the namespaces that cs1 is not supposed to add to the error categories&lt;br /&gt;
	if not is_set (no_tracking_cats) then										-- ignore if we are already not going to categorize this page&lt;br /&gt;
		if in_array (this_page.nsText, cfg.uncategorized_namespaces) then&lt;br /&gt;
			no_tracking_cats = &amp;quot;true&amp;quot;;											-- set no_tracking_cats&lt;br /&gt;
		end&lt;br /&gt;
		for _,v in ipairs (cfg.uncategorized_subpages) do						-- cycle through page name patterns&lt;br /&gt;
			if this_page.text:match (v) then									-- test page name against each pattern&lt;br /&gt;
				no_tracking_cats = &amp;quot;true&amp;quot;;										-- set no_tracking_cats&lt;br /&gt;
				break;															-- bail out if one is found&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- check for extra |page=, |pages= or |at= parameters. (also sheet and sheets while we&#039;re at it)&lt;br /&gt;
	select_one( args, {&#039;page&#039;, &#039;p&#039;, &#039;pp&#039;, &#039;pages&#039;, &#039;at&#039;, &#039;sheet&#039;, &#039;sheets&#039;}, &#039;redundant_parameters&#039; );		-- this is a dummy call simply to get the error message and category&lt;br /&gt;
&lt;br /&gt;
	local NoPP = A[&#039;NoPP&#039;] &lt;br /&gt;
	if is_set (NoPP) and is_valid_parameter_value (NoPP, &#039;nopp&#039;, cfg.keywords [&#039;yes_true_y&#039;]) then&lt;br /&gt;
		NoPP = true;&lt;br /&gt;
	else&lt;br /&gt;
		NoPP = nil;																-- unset, used as a flag later&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set(Page) then&lt;br /&gt;
		if is_set(Pages) or is_set(At) then&lt;br /&gt;
			Pages = &#039;&#039;;															-- unset the others&lt;br /&gt;
			At = &#039;&#039;;&lt;br /&gt;
		end&lt;br /&gt;
		extra_text_in_page_check (Page);										-- add this page to maint cat if |page= value begins with what looks like p. or pp.&lt;br /&gt;
	elseif is_set(Pages) then&lt;br /&gt;
		if is_set(At) then&lt;br /&gt;
			At = &#039;&#039;;															-- unset&lt;br /&gt;
		end&lt;br /&gt;
		extra_text_in_page_check (Pages);										-- add this page to maint cat if |pages= value begins with what looks like p. or pp.&lt;br /&gt;
	end	&lt;br /&gt;
&lt;br /&gt;
-- both |publication-place= and |place= (|location=) allowed if different&lt;br /&gt;
	if not is_set(PublicationPlace) and is_set(Place) then&lt;br /&gt;
		PublicationPlace = Place;							-- promote |place= (|location=) to |publication-place&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if PublicationPlace == Place then Place = &#039;&#039;; end		-- don&#039;t need both if they are the same&lt;br /&gt;
	&lt;br /&gt;
--[[&lt;br /&gt;
Parameter remapping for cite encyclopedia:&lt;br /&gt;
When the citation has these parameters:&lt;br /&gt;
	|encyclopedia and |title then map |title to |article and |encyclopedia to |title&lt;br /&gt;
	|encyclopedia and |article then map |encyclopedia to |title&lt;br /&gt;
	|encyclopedia then map |encyclopedia to |title&lt;br /&gt;
&lt;br /&gt;
	|trans_title maps to |trans_chapter when |title is re-mapped&lt;br /&gt;
	|url maps to |chapterurl when |title is remapped&lt;br /&gt;
&lt;br /&gt;
All other combinations of |encyclopedia, |title, and |article are not modified&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local Encyclopedia = A[&#039;Encyclopedia&#039;];&lt;br /&gt;
&lt;br /&gt;
	if ( config.CitationClass == &amp;quot;encyclopaedia&amp;quot; ) or ( config.CitationClass == &amp;quot;citation&amp;quot; and is_set (Encyclopedia)) then	-- test code for citation&lt;br /&gt;
		if is_set(Periodical) then												-- Periodical is set when |encyclopedia is set&lt;br /&gt;
			if is_set(Title) or is_set (ScriptTitle) then&lt;br /&gt;
				if not is_set(Chapter) then&lt;br /&gt;
					Chapter = Title;											-- |encyclopedia and |title are set so map |title to |article and |encyclopedia to |title&lt;br /&gt;
					ScriptChapter = ScriptTitle;&lt;br /&gt;
					TransChapter = TransTitle;&lt;br /&gt;
					ChapterURL = URL;&lt;br /&gt;
					if not is_set (ChapterURL) and is_set (TitleLink) then&lt;br /&gt;
						Chapter= &#039;[[&#039; .. TitleLink .. &#039;|&#039; .. Chapter .. &#039;]]&#039;;&lt;br /&gt;
					end&lt;br /&gt;
					Title = Periodical;&lt;br /&gt;
					ChapterFormat = Format;&lt;br /&gt;
					Periodical = &#039;&#039;;											-- redundant so unset&lt;br /&gt;
					TransTitle = &#039;&#039;;&lt;br /&gt;
					URL = &#039;&#039;;&lt;br /&gt;
					Format = &#039;&#039;;&lt;br /&gt;
					TitleLink = &#039;&#039;;&lt;br /&gt;
					ScriptTitle = &#039;&#039;;&lt;br /&gt;
				end&lt;br /&gt;
			else																-- |title not set&lt;br /&gt;
				Title = Periodical;												-- |encyclopedia set and |article set or not set so map |encyclopedia to |title&lt;br /&gt;
				Periodical = &#039;&#039;;												-- redundant so unset&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- Special case for cite techreport.&lt;br /&gt;
	if (config.CitationClass == &amp;quot;techreport&amp;quot;) then								-- special case for cite techreport&lt;br /&gt;
		if is_set(A[&#039;Number&#039;]) then													-- cite techreport uses &#039;number&#039;, which other citations alias to &#039;issue&#039;&lt;br /&gt;
			if not is_set(ID) then												-- can we use ID for the &amp;quot;number&amp;quot;?&lt;br /&gt;
				ID = A[&#039;Number&#039;];													-- yes, use it&lt;br /&gt;
			else																-- ID has a value so emit error message&lt;br /&gt;
				table.insert( z.message_tail, { set_error(&#039;redundant_parameters&#039;, {wrap_style (&#039;parameter&#039;, &#039;id&#039;) .. &#039; and &#039; .. wrap_style (&#039;parameter&#039;, &#039;number&#039;)}, true )});&lt;br /&gt;
			end&lt;br /&gt;
		end	&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- special case for cite interview&lt;br /&gt;
	if (config.CitationClass == &amp;quot;interview&amp;quot;) then&lt;br /&gt;
		if is_set(Program) then&lt;br /&gt;
			ID = &#039; &#039; .. Program;&lt;br /&gt;
		end&lt;br /&gt;
		if is_set(Callsign) then&lt;br /&gt;
			if is_set(ID) then&lt;br /&gt;
				ID = ID .. sepc .. &#039; &#039; .. Callsign;&lt;br /&gt;
			else&lt;br /&gt;
				ID = &#039; &#039; .. Callsign;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if is_set(City) then&lt;br /&gt;
			if is_set(ID) then&lt;br /&gt;
				ID = ID .. sepc .. &#039; &#039; .. City;&lt;br /&gt;
			else&lt;br /&gt;
				ID = &#039; &#039; .. City;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if is_set(Others) then&lt;br /&gt;
			if is_set(TitleType) then&lt;br /&gt;
				Others = &#039; &#039; .. TitleType .. &#039; with &#039; .. Others;&lt;br /&gt;
				TitleType = &#039;&#039;;&lt;br /&gt;
			else&lt;br /&gt;
				Others = &#039; &#039; .. &#039;Interview with &#039; .. Others;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			Others = &#039;(Interview)&#039;;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- special case for cite mailing list&lt;br /&gt;
	if (config.CitationClass == &amp;quot;mailinglist&amp;quot;) then&lt;br /&gt;
		Periodical = A [&#039;MailingList&#039;];&lt;br /&gt;
	elseif &#039;mailinglist&#039; == A:ORIGIN(&#039;Periodical&#039;) then&lt;br /&gt;
		Periodical = &#039;&#039;;														-- unset because mailing list is only used for cite mailing list&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- Account for the oddity that is {{cite conference}}, before generation of COinS data.&lt;br /&gt;
	if &#039;conference&#039; == config.CitationClass then&lt;br /&gt;
		if is_set(BookTitle) then&lt;br /&gt;
			Chapter = Title;&lt;br /&gt;
--			ChapterLink = TitleLink;											-- |chapterlink= is deprecated&lt;br /&gt;
			ChapterURL = URL;&lt;br /&gt;
			ChapterURLorigin = URLorigin;&lt;br /&gt;
			URLorigin = &#039;&#039;;&lt;br /&gt;
			ChapterFormat = Format;&lt;br /&gt;
			TransChapter = TransTitle;&lt;br /&gt;
			Title = BookTitle;&lt;br /&gt;
			Format = &#039;&#039;;&lt;br /&gt;
--			TitleLink = &#039;&#039;;&lt;br /&gt;
			TransTitle = &#039;&#039;;&lt;br /&gt;
			URL = &#039;&#039;;&lt;br /&gt;
		end&lt;br /&gt;
	elseif &#039;speech&#039; ~= config.CitationClass then&lt;br /&gt;
		Conference = &#039;&#039;;														-- not cite conference or cite speech so make sure this is empty string&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- cite map oddities&lt;br /&gt;
	local Cartography = &amp;quot;&amp;quot;;&lt;br /&gt;
	local Scale = &amp;quot;&amp;quot;;&lt;br /&gt;
	local Sheet = A[&#039;Sheet&#039;] or &#039;&#039;;&lt;br /&gt;
	local Sheets = A[&#039;Sheets&#039;] or &#039;&#039;;&lt;br /&gt;
	if config.CitationClass == &amp;quot;map&amp;quot; then&lt;br /&gt;
		Chapter = A[&#039;Map&#039;];&lt;br /&gt;
		ChapterURL = A[&#039;MapURL&#039;];&lt;br /&gt;
		TransChapter = A[&#039;TransMap&#039;];&lt;br /&gt;
		ChapterURLorigin = A:ORIGIN(&#039;MapURL&#039;);&lt;br /&gt;
		ChapterFormat = A[&#039;MapFormat&#039;];&lt;br /&gt;
		&lt;br /&gt;
		Cartography = A[&#039;Cartography&#039;];&lt;br /&gt;
		if is_set( Cartography ) then&lt;br /&gt;
			Cartography = sepc .. &amp;quot; &amp;quot; .. wrap_msg (&#039;cartography&#039;, Cartography, use_lowercase);&lt;br /&gt;
		end		&lt;br /&gt;
		Scale = A[&#039;Scale&#039;];&lt;br /&gt;
		if is_set( Scale ) then&lt;br /&gt;
			Scale = sepc .. &amp;quot; &amp;quot; .. Scale;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- Account for the oddities that are {{cite episode}} and {{cite serial}}, before generation of COinS data.&lt;br /&gt;
	if &#039;episode&#039; == config.CitationClass or &#039;serial&#039; == config.CitationClass then&lt;br /&gt;
		local AirDate = A[&#039;AirDate&#039;];&lt;br /&gt;
		local SeriesLink = A[&#039;SeriesLink&#039;];&lt;br /&gt;
			if is_set (SeriesLink) and false == link_param_ok (SeriesLink) then&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;bad_paramlink&#039;, A:ORIGIN(&#039;SeriesLink&#039;))});&lt;br /&gt;
			end&lt;br /&gt;
		local Network = A[&#039;Network&#039;];&lt;br /&gt;
		local Station = A[&#039;Station&#039;];&lt;br /&gt;
		local s, n = {}, {};&lt;br /&gt;
																				-- do common parameters first&lt;br /&gt;
		if is_set(Network) then table.insert(n, Network); end&lt;br /&gt;
		if is_set(Station) then table.insert(n, Station); end&lt;br /&gt;
		ID = table.concat(n, sepc .. &#039; &#039;);&lt;br /&gt;
		&lt;br /&gt;
		if not is_set (Date) and is_set (AirDate) then							-- promote airdate to date&lt;br /&gt;
			Date = AirDate;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if &#039;episode&#039; == config.CitationClass then								-- handle the oddities that are strictly {{cite episode}}&lt;br /&gt;
			local Season = A[&#039;Season&#039;];&lt;br /&gt;
			local SeriesNumber = A[&#039;SeriesNumber&#039;];&lt;br /&gt;
&lt;br /&gt;
			if is_set (Season) and is_set (SeriesNumber) then					-- these are mutually exclusive so if both are set&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;redundant_parameters&#039;, {wrap_style (&#039;parameter&#039;, &#039;season&#039;) .. &#039; and &#039; .. wrap_style (&#039;parameter&#039;, &#039;seriesno&#039;)}, true ) } );		-- add error message&lt;br /&gt;
				SeriesNumber = &#039;&#039;;												-- unset; prefer |season= over |seriesno=&lt;br /&gt;
			end&lt;br /&gt;
																				-- assemble a table of parts concatenated later into Series&lt;br /&gt;
			if is_set(Season) then table.insert(s, wrap_msg (&#039;season&#039;, Season, use_lowercase)); end&lt;br /&gt;
			if is_set(SeriesNumber) then table.insert(s, wrap_msg (&#039;series&#039;, SeriesNumber, use_lowercase)); end&lt;br /&gt;
			if is_set(Issue) then table.insert(s, wrap_msg (&#039;episode&#039;, Issue, use_lowercase)); end&lt;br /&gt;
			Issue = &#039;&#039;;															-- unset because this is not a unique parameter&lt;br /&gt;
	&lt;br /&gt;
			Chapter = Title;													-- promote title parameters to chapter&lt;br /&gt;
			ScriptChapter = ScriptTitle;&lt;br /&gt;
			ChapterLink = TitleLink;											-- alias episodelink&lt;br /&gt;
			TransChapter = TransTitle;&lt;br /&gt;
			ChapterURL = URL;&lt;br /&gt;
			ChapterURLorigin = A:ORIGIN(&#039;URL&#039;);&lt;br /&gt;
			&lt;br /&gt;
			Title = Series;														-- promote series to title&lt;br /&gt;
			TitleLink = SeriesLink;&lt;br /&gt;
			Series = table.concat(s, sepc .. &#039; &#039;);								-- this is concatenation of season, seriesno, episode number&lt;br /&gt;
&lt;br /&gt;
			if is_set (ChapterLink) and not is_set (ChapterURL) then			-- link but not URL&lt;br /&gt;
				Chapter = &#039;[[&#039; .. ChapterLink .. &#039;|&#039; .. Chapter .. &#039;]]&#039;;		-- ok to wikilink&lt;br /&gt;
			elseif is_set (ChapterLink) and is_set (ChapterURL) then			-- if both are set, URL links episode;&lt;br /&gt;
				Series = &#039;[[&#039; .. ChapterLink .. &#039;|&#039; .. Series .. &#039;]]&#039;;			-- series links with ChapterLink (episodelink -&amp;gt; TitleLink -&amp;gt; ChapterLink) ugly&lt;br /&gt;
			end&lt;br /&gt;
			URL = &#039;&#039;;															-- unset&lt;br /&gt;
			TransTitle = &#039;&#039;;&lt;br /&gt;
			ScriptTitle = &#039;&#039;;&lt;br /&gt;
			&lt;br /&gt;
		else																	-- now oddities that are cite serial&lt;br /&gt;
			Issue = &#039;&#039;;															-- unset because this parameter no longer supported by the citation/core version of cite serial&lt;br /&gt;
			Chapter = A[&#039;Episode&#039;];												-- TODO: make |episode= available to cite episode someday?&lt;br /&gt;
			if is_set (Series) and is_set (SeriesLink) then&lt;br /&gt;
				Series = &#039;[[&#039; .. SeriesLink .. &#039;|&#039; .. Series .. &#039;]]&#039;;&lt;br /&gt;
			end&lt;br /&gt;
			Series = wrap_style (&#039;italic-title&#039;, Series);						-- series is italicized&lt;br /&gt;
		end	&lt;br /&gt;
	end&lt;br /&gt;
-- end of {{cite episode}} stuff&lt;br /&gt;
&lt;br /&gt;
-- Account for the oddities that are {{cite arxiv}}, before generation of COinS data.&lt;br /&gt;
	if &#039;arxiv&#039; == config.CitationClass then&lt;br /&gt;
		if not is_set (ID_list[&#039;ARXIV&#039;]) then									-- |arxiv= or |eprint= required for cite arxiv&lt;br /&gt;
			table.insert( z.message_tail, { set_error( &#039;arxiv_missing&#039;, {}, true ) } );		-- add error message&lt;br /&gt;
		elseif is_set (Series) then												-- series is an alias of version&lt;br /&gt;
			ID_list[&#039;ARXIV&#039;] = ID_list[&#039;ARXIV&#039;] .. Series;						-- concatenate version onto the end of the arxiv identifier&lt;br /&gt;
			Series = &#039;&#039;;														-- unset&lt;br /&gt;
			deprecated_parameter (&#039;version&#039;);									-- deprecated parameter but only for cite arxiv&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if first_set ({AccessDate, At, Chapter, Format, Page, Pages, Periodical, PublisherName, URL,	-- a crude list of parameters that are not supported by cite arxiv&lt;br /&gt;
			ID_list[&#039;ASIN&#039;], ID_list[&#039;BIBCODE&#039;], ID_list[&#039;DOI&#039;], ID_list[&#039;ISBN&#039;], ID_list[&#039;ISSN&#039;],&lt;br /&gt;
			ID_list[&#039;JFM&#039;], ID_list[&#039;JSTOR&#039;], ID_list[&#039;LCCN&#039;], ID_list[&#039;MR&#039;], ID_list[&#039;OCLC&#039;], ID_list[&#039;OL&#039;],&lt;br /&gt;
			ID_list[&#039;OSTI&#039;], ID_list[&#039;PMC&#039;], ID_list[&#039;PMID&#039;], ID_list[&#039;RFC&#039;], ID_list[&#039;SSRN&#039;], ID_list[&#039;USENETID&#039;], ID_list[&#039;ZBL&#039;]},27) then&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;arxiv_params_not_supported&#039;, {}, true ) } );		-- add error message&lt;br /&gt;
&lt;br /&gt;
				AccessDate= &#039;&#039;;													-- set these to empty string; not supported in cite arXiv&lt;br /&gt;
				PublisherName = &#039;&#039;;												-- (if the article has been published, use cite journal, or other)&lt;br /&gt;
				Chapter = &#039;&#039;;&lt;br /&gt;
				URL = &#039;&#039;;&lt;br /&gt;
				Format = &#039;&#039;;&lt;br /&gt;
				Page = &#039;&#039;; Pages = &#039;&#039;; At = &#039;&#039;;&lt;br /&gt;
		end&lt;br /&gt;
		Periodical = &#039;arXiv&#039;;													-- set to arXiv for COinS; after that, must be set to empty string&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- handle type parameter for those CS1 citations that have default values&lt;br /&gt;
	if in_array(config.CitationClass, {&amp;quot;AV-media-notes&amp;quot;, &amp;quot;DVD-notes&amp;quot;, &amp;quot;mailinglist&amp;quot;, &amp;quot;map&amp;quot;, &amp;quot;podcast&amp;quot;, &amp;quot;pressrelease&amp;quot;, &amp;quot;report&amp;quot;, &amp;quot;techreport&amp;quot;, &amp;quot;thesis&amp;quot;}) then&lt;br /&gt;
		TitleType = set_titletype (config.CitationClass, TitleType);&lt;br /&gt;
		if is_set(Degree) and &amp;quot;Thesis&amp;quot; == TitleType then						-- special case for cite thesis&lt;br /&gt;
			TitleType = Degree .. &amp;quot; thesis&amp;quot;;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set(TitleType) then													-- if type parameter is specified&lt;br /&gt;
	TitleType = substitute( cfg.messages[&#039;type&#039;], TitleType);					-- display it in parentheses&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- legacy: promote concatenation of |month=, and |year= to Date if Date not set; or, promote PublicationDate to Date if neither Date nor Year are set.&lt;br /&gt;
	if not is_set (Date) then&lt;br /&gt;
		Date = Year;															-- promote Year to Date&lt;br /&gt;
		Year = nil;																-- make nil so Year as empty string isn&#039;t used for CITEREF&lt;br /&gt;
		if not is_set (Date) and is_set(PublicationDate) then					-- use PublicationDate when |date= and |year= are not set&lt;br /&gt;
			Date = PublicationDate;												-- promote PublicationDate to Date&lt;br /&gt;
			PublicationDate = &#039;&#039;;												-- unset, no longer needed&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if PublicationDate == Date then PublicationDate = &#039;&#039;; end					-- if PublicationDate is same as Date, don&#039;t display in rendered citation&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Go test all of the date-holding parameters for valid MOS:DATE format and make sure that dates are real dates. This must be done before we do COinS because here is where&lt;br /&gt;
we get the date used in the metadata.&lt;br /&gt;
&lt;br /&gt;
Date validation supporting code is in Module:Citation/CS1/Date_validation&lt;br /&gt;
]]&lt;br /&gt;
	do	-- create defined block to contain local variables error_message and mismatch&lt;br /&gt;
		local error_message = &#039;&#039;;&lt;br /&gt;
																				-- AirDate has been promoted to Date so not necessary to check it&lt;br /&gt;
		anchor_year, error_message = dates({[&#039;access-date&#039;]=AccessDate, [&#039;archive-date&#039;]=ArchiveDate, [&#039;date&#039;]=Date, [&#039;doi-broken-date&#039;]=DoiBroken,&lt;br /&gt;
			[&#039;embargo&#039;]=Embargo, [&#039;lay-date&#039;]=LayDate, [&#039;publication-date&#039;]=PublicationDate, [&#039;year&#039;]=Year}, COinS_date);&lt;br /&gt;
&lt;br /&gt;
		if is_set (Year) and is_set (Date) then									-- both |date= and |year= not normally needed; &lt;br /&gt;
			local mismatch = year_date_check (Year, Date)&lt;br /&gt;
			if 0 == mismatch then												-- |year= does not match a year-value in |date=&lt;br /&gt;
				if is_set (error_message) then									-- if there is already an error message&lt;br /&gt;
					error_message = error_message .. &#039;, &#039;;						-- tack on this additional message&lt;br /&gt;
				end&lt;br /&gt;
				error_message = error_message .. &#039;&amp;amp;#124;year= / &amp;amp;#124;date= mismatch&#039;;&lt;br /&gt;
			elseif 1 == mismatch then											-- |year= matches year-value in |date=&lt;br /&gt;
				add_maint_cat (&#039;date_year&#039;);&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if is_set(error_message) then&lt;br /&gt;
			table.insert( z.message_tail, { set_error( &#039;bad_date&#039;, {error_message}, true ) } );	-- add this error message&lt;br /&gt;
		end&lt;br /&gt;
	end	-- end of do&lt;br /&gt;
&lt;br /&gt;
-- Account for the oddity that is {{cite journal}} with |pmc= set and |url= not set.  Do this after date check but before COInS.&lt;br /&gt;
-- Here we unset Embargo if PMC not embargoed (|embargo= not set in the citation) or if the embargo time has expired. Otherwise, holds embargo date&lt;br /&gt;
	Embargo = is_embargoed (Embargo);											-- &lt;br /&gt;
&lt;br /&gt;
	if config.CitationClass == &amp;quot;journal&amp;quot; and not is_set(URL) and is_set(ID_list[&#039;PMC&#039;]) then&lt;br /&gt;
		if not is_set (Embargo) then											-- if not embargoed or embargo has expired&lt;br /&gt;
			URL=cfg.id_handlers[&#039;PMC&#039;].prefix .. ID_list[&#039;PMC&#039;];				-- set url to be the same as the PMC external link if not embargoed&lt;br /&gt;
			URLorigin = cfg.id_handlers[&#039;PMC&#039;].parameters[1];					-- set URLorigin to parameter name for use in error message if citation is missing a |title=&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- At this point fields may be nil if they weren&#039;t specified in the template use.  We can use that fact.&lt;br /&gt;
	-- Test if citation has no title&lt;br /&gt;
	if	not is_set(Title) and&lt;br /&gt;
		not is_set(TransTitle) and&lt;br /&gt;
		not is_set(ScriptTitle) then&lt;br /&gt;
			if &#039;episode&#039; == config.CitationClass then							-- special case for cite episode; TODO: is there a better way to do this?&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;citation_missing_title&#039;, {&#039;series&#039;}, true ) } );&lt;br /&gt;
			else&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;citation_missing_title&#039;, {&#039;title&#039;}, true ) } );&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if &#039;none&#039; == Title and in_array (config.CitationClass, {&#039;journal&#039;, &#039;citation&#039;}) and is_set (Periodical) and &#039;journal&#039; == A:ORIGIN(&#039;Periodical&#039;) then	-- special case for journal cites&lt;br /&gt;
		Title = &#039;&#039;;																-- set title to empty string&lt;br /&gt;
		add_maint_cat (&#039;untitled&#039;);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	check_for_url ({															-- add error message when any of these parameters contains a URL&lt;br /&gt;
		[&#039;title&#039;]=Title,&lt;br /&gt;
		[A:ORIGIN(&#039;Chapter&#039;)]=Chapter,&lt;br /&gt;
		[A:ORIGIN(&#039;Periodical&#039;)]=Periodical,&lt;br /&gt;
		[A:ORIGIN(&#039;PublisherName&#039;)] = PublisherName,&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
	-- COinS metadata (see &amp;lt;http://ocoins.info/&amp;gt;) for automated parsing of citation information.&lt;br /&gt;
	-- handle the oddity that is cite encyclopedia and {{citation |encyclopedia=something}}. Here we presume that&lt;br /&gt;
	-- when Periodical, Title, and Chapter are all set, then Periodical is the book (encyclopedia) title, Title&lt;br /&gt;
	-- is the article title, and Chapter is a section within the article.  So, we remap &lt;br /&gt;
	&lt;br /&gt;
	local coins_chapter = Chapter;												-- default assuming that remapping not required&lt;br /&gt;
	local coins_title = Title;													-- et tu&lt;br /&gt;
	if &#039;encyclopaedia&#039; == config.CitationClass or (&#039;citation&#039; == config.CitationClass and is_set (Encyclopedia)) then&lt;br /&gt;
		if is_set (Chapter) and is_set (Title) and is_set (Periodical) then		-- if all are used then&lt;br /&gt;
			coins_chapter = Title;												-- remap&lt;br /&gt;
			coins_title = Periodical;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local coins_author = a;														-- default for coins rft.au &lt;br /&gt;
	if 0 &amp;lt; #c then																-- but if contributor list&lt;br /&gt;
		coins_author = c;														-- use that instead&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- this is the function call to COinS()&lt;br /&gt;
	local OCinSoutput = COinS({&lt;br /&gt;
		[&#039;Periodical&#039;] = Periodical,&lt;br /&gt;
		[&#039;Encyclopedia&#039;] = Encyclopedia,&lt;br /&gt;
		[&#039;Chapter&#039;] = make_coins_title (coins_chapter, ScriptChapter),			-- Chapter and ScriptChapter stripped of bold / italic wikimarkup&lt;br /&gt;
		[&#039;Map&#039;] = Map,&lt;br /&gt;
		[&#039;Degree&#039;] = Degree;													-- cite thesis only&lt;br /&gt;
		[&#039;Title&#039;] = make_coins_title (coins_title, ScriptTitle),				-- Title and ScriptTitle stripped of bold / italic wikimarkup&lt;br /&gt;
		[&#039;PublicationPlace&#039;] = PublicationPlace,&lt;br /&gt;
		[&#039;Date&#039;] = COinS_date.rftdate,											-- COinS_date has correctly formatted date if Date is valid;&lt;br /&gt;
		[&#039;Season&#039;] = COinS_date.rftssn,&lt;br /&gt;
		[&#039;Chron&#039;] =  COinS_date.rftchron or (not COinS_date.rftdate and Date) or &#039;&#039;,	-- chron but if not set and invalid date format use Date; keep this last bit?&lt;br /&gt;
		[&#039;Series&#039;] = Series,&lt;br /&gt;
		[&#039;Volume&#039;] = Volume,&lt;br /&gt;
		[&#039;Issue&#039;] = Issue,&lt;br /&gt;
		[&#039;Pages&#039;] = get_coins_pages (first_set ({Sheet, Sheets, Page, Pages, At}, 5)),				-- pages stripped of external links&lt;br /&gt;
		[&#039;Edition&#039;] = Edition,&lt;br /&gt;
		[&#039;PublisherName&#039;] = PublisherName,&lt;br /&gt;
		[&#039;URL&#039;] = first_set ({ChapterURL, URL}, 2),&lt;br /&gt;
		[&#039;Authors&#039;] = coins_author,&lt;br /&gt;
		[&#039;ID_list&#039;] = ID_list,&lt;br /&gt;
		[&#039;RawPage&#039;] = this_page.prefixedText,&lt;br /&gt;
	}, config.CitationClass);&lt;br /&gt;
&lt;br /&gt;
-- Account for the oddities that are {{cite arxiv}}, AFTER generation of COinS data.&lt;br /&gt;
	if &#039;arxiv&#039; == config.CitationClass then										-- we have set rft.jtitle in COinS to arXiv, now unset so it isn&#039;t displayed&lt;br /&gt;
		Periodical = &#039;&#039;;														-- periodical not allowed in cite arxiv; if article has been published, use cite journal&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- special case for cite newsgroup.  Do this after COinS because we are modifying Publishername to include some static text&lt;br /&gt;
	if &#039;newsgroup&#039; == config.CitationClass then&lt;br /&gt;
		if is_set (PublisherName) then&lt;br /&gt;
			PublisherName = substitute (cfg.messages[&#039;newsgroup&#039;], external_link( &#039;news:&#039; .. PublisherName, PublisherName, A:ORIGIN(&#039;PublisherName&#039;) ));&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- Now perform various field substitutions.&lt;br /&gt;
	-- We also add leading spaces and surrounding markup and punctuation to the&lt;br /&gt;
	-- various parts of the citation, but only when they are non-nil.&lt;br /&gt;
	local EditorCount;															-- used only for choosing {ed.) or (eds.) annotation at end of editor name-list&lt;br /&gt;
	do&lt;br /&gt;
		local last_first_list;&lt;br /&gt;
		local maximum;&lt;br /&gt;
		local control = { &lt;br /&gt;
			format = NameListFormat,											-- empty string or &#039;vanc&#039;&lt;br /&gt;
			maximum = nil,														-- as if display-authors or display-editors not set&lt;br /&gt;
			lastauthoramp = LastAuthorAmp,&lt;br /&gt;
			page_name = this_page.text											-- get current page name so that we don&#039;t wikilink to it via editorlinkn&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		do																		-- do editor name list first because coauthors can modify control table&lt;br /&gt;
			maximum , editor_etal = get_display_authors_editors (A[&#039;DisplayEditors&#039;], #e, &#039;editors&#039;, editor_etal);&lt;br /&gt;
			-- Preserve old-style implicit et al.&lt;br /&gt;
			if not is_set(maximum) and #e == 4 then &lt;br /&gt;
				maximum = 3;&lt;br /&gt;
				table.insert( z.message_tail, { set_error(&#039;implict_etal_editor&#039;, {}, true) } );&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			control.maximum = maximum;&lt;br /&gt;
			&lt;br /&gt;
			last_first_list, EditorCount = list_people(control, e, editor_etal, &#039;editor&#039;);&lt;br /&gt;
&lt;br /&gt;
			if is_set (Editors) then&lt;br /&gt;
				if editor_etal then&lt;br /&gt;
					Editors = Editors .. &#039; &#039; .. cfg.messages[&#039;et al&#039;];			-- add et al. to editors parameter beause |display-editors=etal&lt;br /&gt;
					EditorCount = 2;											-- with et al., |editors= is multiple names; spoof to display (eds.) annotation&lt;br /&gt;
				else&lt;br /&gt;
					EditorCount = 2;											-- we don&#039;t know but assume |editors= is multiple names; spoof to display (eds.) annotation&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				Editors = last_first_list;										-- either an author name list or an empty string&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if 1 == EditorCount and (true == editor_etal or 1 &amp;lt; #e) then		-- only one editor displayed but includes etal then &lt;br /&gt;
				EditorCount = 2;												-- spoof to display (eds.) annotation&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		do																		-- now do translators&lt;br /&gt;
			control.maximum = #t;												-- number of translators&lt;br /&gt;
			Translators = list_people(control, t, false, &#039;translator&#039;);			-- et al not currently supported&lt;br /&gt;
		end&lt;br /&gt;
		do																		-- now do contributors&lt;br /&gt;
			control.maximum = #c;												-- number of contributors&lt;br /&gt;
			Contributors = list_people(control, c, false, &#039;contributor&#039;);		-- et al not currently supported&lt;br /&gt;
		end&lt;br /&gt;
		do																		-- now do authors&lt;br /&gt;
			control.maximum , author_etal = get_display_authors_editors (A[&#039;DisplayAuthors&#039;], #a, &#039;authors&#039;, author_etal);&lt;br /&gt;
&lt;br /&gt;
			if is_set(Coauthors) then											-- if the coauthor field is also used, prevent ampersand and et al. formatting.&lt;br /&gt;
				control.lastauthoramp = nil;&lt;br /&gt;
				control.maximum = #a + 1;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			last_first_list = list_people(control, a, author_etal, &#039;author&#039;);&lt;br /&gt;
&lt;br /&gt;
			if is_set (Authors) then&lt;br /&gt;
				Authors, author_etal = name_has_etal (Authors, author_etal, false);	-- find and remove variations on et al.&lt;br /&gt;
				if author_etal then&lt;br /&gt;
					Authors = Authors .. &#039; &#039; .. cfg.messages[&#039;et al&#039;];			-- add et al. to authors parameter&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				Authors = last_first_list;										-- either an author name list or an empty string&lt;br /&gt;
			end&lt;br /&gt;
		end																		-- end of do&lt;br /&gt;
&lt;br /&gt;
		if not is_set(Authors) and is_set(Coauthors) then						-- coauthors aren&#039;t displayed if one of authors=, authorn=, or lastn= isn&#039;t specified&lt;br /&gt;
			table.insert( z.message_tail, { set_error(&#039;coauthors_missing_author&#039;, {}, true) } );	-- emit error message&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- apply |[xx-]format= styling; at the end, these parameters hold correctly styled format annotation,&lt;br /&gt;
-- an error message if the associated url is not set, or an empty string for concatenation&lt;br /&gt;
	ArchiveFormat = style_format (ArchiveFormat, ArchiveURL, &#039;archive-format&#039;, &#039;archive-url&#039;);&lt;br /&gt;
	ConferenceFormat = style_format (ConferenceFormat, ConferenceURL, &#039;conference-format&#039;, &#039;conference-url&#039;);&lt;br /&gt;
	Format = style_format (Format, URL, &#039;format&#039;, &#039;url&#039;);&lt;br /&gt;
	LayFormat = style_format (LayFormat, LayURL, &#039;lay-format&#039;, &#039;lay-url&#039;);&lt;br /&gt;
	TranscriptFormat = style_format (TranscriptFormat, TranscriptURL, &#039;transcript-format&#039;, &#039;transcripturl&#039;);&lt;br /&gt;
&lt;br /&gt;
-- special case for chapter format so no error message or cat when chapter not supported&lt;br /&gt;
	if not (in_array(config.CitationClass, {&#039;web&#039;,&#039;news&#039;,&#039;journal&#039;, &#039;magazine&#039;, &#039;pressrelease&#039;,&#039;podcast&#039;, &#039;newsgroup&#039;, &#039;arxiv&#039;}) or&lt;br /&gt;
		(&#039;citation&#039; == config.CitationClass and is_set (Periodical) and not is_set (Encyclopedia))) then&lt;br /&gt;
			ChapterFormat = style_format (ChapterFormat, ChapterURL, &#039;chapter-format&#039;, &#039;chapter-url&#039;);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if  not is_set(URL) then --and&lt;br /&gt;
		if in_array(config.CitationClass, {&amp;quot;web&amp;quot;,&amp;quot;podcast&amp;quot;, &amp;quot;mailinglist&amp;quot;}) then		-- Test if cite web or cite podcast |url= is missing or empty &lt;br /&gt;
			table.insert( z.message_tail, { set_error( &#039;cite_web_url&#039;, {}, true ) } );&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Test if accessdate is given without giving a URL&lt;br /&gt;
		if is_set(AccessDate) and not is_set(ChapterURL)then					-- ChapterURL may be set when the others are not set; TODO: move this to a separate test?&lt;br /&gt;
			table.insert( z.message_tail, { set_error( &#039;accessdate_missing_url&#039;, {}, true ) } );&lt;br /&gt;
			AccessDate = &#039;&#039;;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local OriginalURL, OriginalURLorigin, OriginalFormat;						-- TODO: swap chapter and title here so that archive applies to most specific if both are set?&lt;br /&gt;
	DeadURL = DeadURL:lower();													-- used later when assembling archived text&lt;br /&gt;
	if is_set( ArchiveURL ) then&lt;br /&gt;
		if is_set (URL) then&lt;br /&gt;
			OriginalURL = URL;													-- save copy of original source URL&lt;br /&gt;
			OriginalURLorigin = URLorigin;										-- name of url parameter for error messages&lt;br /&gt;
			OriginalFormat = Format;											-- and original |format=&lt;br /&gt;
			if &#039;no&#039; ~= DeadURL then												-- if URL set then archive-url applies to it&lt;br /&gt;
				URL = ArchiveURL												-- swap-in the archive&#039;s url&lt;br /&gt;
				URLorigin = A:ORIGIN(&#039;ArchiveURL&#039;)								-- name of archive url parameter for error messages&lt;br /&gt;
				Format = ArchiveFormat or &#039;&#039;;									-- swap in archive&#039;s format&lt;br /&gt;
			end&lt;br /&gt;
		elseif is_set (ChapterURL) then 										-- URL not set so if chapter-url is set apply archive url to it&lt;br /&gt;
			OriginalURL = ChapterURL;											-- save copy of source chapter&#039;s url for archive text&lt;br /&gt;
			OriginalURLorigin = ChapterURLorigin;								-- name of chapter-url parameter for error messages&lt;br /&gt;
			OriginalFormat = ChapterFormat;										-- and original |format=&lt;br /&gt;
			if &#039;no&#039; ~= DeadURL then&lt;br /&gt;
				ChapterURL = ArchiveURL											-- swap-in the archive&#039;s url&lt;br /&gt;
				ChapterURLorigin = A:ORIGIN(&#039;ArchiveURL&#039;)						-- name of archive-url parameter for error messages&lt;br /&gt;
				ChapterFormat = ArchiveFormat or &#039;&#039;;							-- swap in archive&#039;s format&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if in_array(config.CitationClass, {&#039;web&#039;,&#039;news&#039;,&#039;journal&#039;, &#039;magazine&#039;, &#039;pressrelease&#039;,&#039;podcast&#039;, &#039;newsgroup&#039;, &#039;arxiv&#039;}) or	-- if any of the &#039;periodical&#039; cites except encyclopedia&lt;br /&gt;
		(&#039;citation&#039; == config.CitationClass and is_set (Periodical) and not is_set (Encyclopedia)) then&lt;br /&gt;
			local chap_param;&lt;br /&gt;
			if is_set (Chapter) then											-- get a parameter name from one of these chapter related meta-parameters&lt;br /&gt;
				chap_param = A:ORIGIN (&#039;Chapter&#039;)&lt;br /&gt;
			elseif is_set (TransChapter) then&lt;br /&gt;
				chap_param = A:ORIGIN (&#039;TransChapter&#039;)&lt;br /&gt;
			elseif is_set (ChapterURL) then&lt;br /&gt;
				chap_param = A:ORIGIN (&#039;ChapterURL&#039;)&lt;br /&gt;
			elseif is_set (ScriptChapter) then&lt;br /&gt;
				chap_param = A:ORIGIN (&#039;ScriptChapter&#039;)&lt;br /&gt;
			else is_set (ChapterFormat)&lt;br /&gt;
				chap_param = A:ORIGIN (&#039;ChapterFormat&#039;)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if is_set (chap_param) then											-- if we found one&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;chapter_ignored&#039;, {chap_param}, true ) } );		-- add error message&lt;br /&gt;
				Chapter = &#039;&#039;;													-- and set them to empty string to be safe with concatenation&lt;br /&gt;
				TransChapter = &#039;&#039;;&lt;br /&gt;
				ChapterURL = &#039;&#039;;&lt;br /&gt;
				ScriptChapter = &#039;&#039;;&lt;br /&gt;
				ChapterFormat = &#039;&#039;;&lt;br /&gt;
			end&lt;br /&gt;
	else																		-- otherwise, format chapter / article title&lt;br /&gt;
		local no_quotes = false;												-- default assume that we will be quoting the chapter parameter value&lt;br /&gt;
		if is_set (Contribution) and 0 &amp;lt; #c then								-- if this is a contribution with contributor(s)&lt;br /&gt;
			if in_array (Contribution:lower(), cfg.keywords.contribution) then	-- and a generic contribution title&lt;br /&gt;
				no_quotes = true;												-- then render it unquoted&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		Chapter = format_chapter_title (ScriptChapter, Chapter, TransChapter, ChapterURL, ChapterURLorigin, no_quotes);		-- Contribution is also in Chapter&lt;br /&gt;
		if is_set (Chapter) then&lt;br /&gt;
			if &#039;map&#039; == config.CitationClass and is_set (TitleType) then&lt;br /&gt;
				Chapter = Chapter .. &#039; &#039; .. TitleType;&lt;br /&gt;
			end&lt;br /&gt;
			Chapter = Chapter .. ChapterFormat .. sepc .. &#039; &#039;;&lt;br /&gt;
		elseif is_set (ChapterFormat) then										-- |chapter= not set but |chapter-format= is so ...&lt;br /&gt;
			Chapter = ChapterFormat .. sepc .. &#039; &#039;;								-- ... ChapterFormat has error message, we want to see it&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Format main title.&lt;br /&gt;
	if is_set(TitleLink) and is_set(Title) then&lt;br /&gt;
		Title = &amp;quot;[[&amp;quot; .. TitleLink .. &amp;quot;|&amp;quot; .. Title .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if in_array(config.CitationClass, {&#039;web&#039;,&#039;news&#039;,&#039;journal&#039;, &#039;magazine&#039;, &#039;pressrelease&#039;,&#039;podcast&#039;, &#039;newsgroup&#039;, &#039;mailinglist&#039;, &#039;arxiv&#039;}) or&lt;br /&gt;
		(&#039;citation&#039; == config.CitationClass and is_set (Periodical) and not is_set (Encyclopedia)) or&lt;br /&gt;
		(&#039;map&#039; == config.CitationClass and is_set (Periodical)) then			-- special case for cite map when the map is in a periodical treat as an article&lt;br /&gt;
			Title = kern_quotes (Title);										-- if necessary, separate title&#039;s leading and trailing quote marks from Module provided quote marks&lt;br /&gt;
			Title = wrap_style (&#039;quoted-title&#039;, Title);&lt;br /&gt;
	&lt;br /&gt;
			Title = script_concatenate (Title, ScriptTitle);					-- &amp;lt;bdi&amp;gt; tags, lang atribute, categorization, etc; must be done after title is wrapped&lt;br /&gt;
			TransTitle= wrap_style (&#039;trans-quoted-title&#039;, TransTitle );&lt;br /&gt;
	elseif &#039;report&#039; == config.CitationClass then								-- no styling for cite report&lt;br /&gt;
		Title = script_concatenate (Title, ScriptTitle);						-- &amp;lt;bdi&amp;gt; tags, lang atribute, categorization, etc; must be done after title is wrapped&lt;br /&gt;
		TransTitle= wrap_style (&#039;trans-quoted-title&#039;, TransTitle );				-- for cite report, use this form for trans-title&lt;br /&gt;
	else&lt;br /&gt;
		Title = wrap_style (&#039;italic-title&#039;, Title);&lt;br /&gt;
		Title = script_concatenate (Title, ScriptTitle);						-- &amp;lt;bdi&amp;gt; tags, lang atribute, categorization, etc; must be done after title is wrapped&lt;br /&gt;
		TransTitle = wrap_style (&#039;trans-italic-title&#039;, TransTitle);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	TransError = &amp;quot;&amp;quot;;&lt;br /&gt;
	if is_set(TransTitle) then&lt;br /&gt;
		if is_set(Title) then&lt;br /&gt;
			TransTitle = &amp;quot; &amp;quot; .. TransTitle;&lt;br /&gt;
		else&lt;br /&gt;
			TransError = &amp;quot; &amp;quot; .. set_error( &#039;trans_missing_title&#039;, {&#039;title&#039;} );&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	Title = Title .. TransTitle;&lt;br /&gt;
	&lt;br /&gt;
	if is_set(Title) then&lt;br /&gt;
		if not is_set(TitleLink) and is_set(URL) then &lt;br /&gt;
			Title = external_link( URL, Title, URLorigin ) .. TransError .. Format;&lt;br /&gt;
			URL = &amp;quot;&amp;quot;;&lt;br /&gt;
			Format = &amp;quot;&amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			Title = Title .. TransError;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set(Place) then&lt;br /&gt;
		Place = &amp;quot; &amp;quot; .. wrap_msg (&#039;written&#039;, Place, use_lowercase) .. sepc .. &amp;quot; &amp;quot;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (Conference) then&lt;br /&gt;
		if is_set (ConferenceURL) then&lt;br /&gt;
			Conference = external_link( ConferenceURL, Conference, ConferenceURLorigin );&lt;br /&gt;
		end&lt;br /&gt;
		Conference = sepc .. &amp;quot; &amp;quot; .. Conference .. ConferenceFormat;&lt;br /&gt;
	elseif is_set(ConferenceURL) then&lt;br /&gt;
		Conference = sepc .. &amp;quot; &amp;quot; .. external_link( ConferenceURL, nil, ConferenceURLorigin );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not is_set(Position) then&lt;br /&gt;
		local Minutes = A[&#039;Minutes&#039;];&lt;br /&gt;
		local Time = A[&#039;Time&#039;];&lt;br /&gt;
&lt;br /&gt;
		if is_set(Minutes) then&lt;br /&gt;
			if is_set (Time) then&lt;br /&gt;
				table.insert( z.message_tail, { set_error( &#039;redundant_parameters&#039;, {wrap_style (&#039;parameter&#039;, &#039;minutes&#039;) .. &#039; and &#039; .. wrap_style (&#039;parameter&#039;, &#039;time&#039;)}, true ) } );&lt;br /&gt;
			end&lt;br /&gt;
			Position = &amp;quot; &amp;quot; .. Minutes .. &amp;quot; &amp;quot; .. cfg.messages[&#039;minutes&#039;];&lt;br /&gt;
		else&lt;br /&gt;
			if is_set(Time) then&lt;br /&gt;
				local TimeCaption = A[&#039;TimeCaption&#039;]&lt;br /&gt;
				if not is_set(TimeCaption) then&lt;br /&gt;
					TimeCaption = cfg.messages[&#039;event&#039;];&lt;br /&gt;
					if sepc ~= &#039;.&#039; then&lt;br /&gt;
						TimeCaption = TimeCaption:lower();&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				Position = &amp;quot; &amp;quot; .. TimeCaption .. &amp;quot; &amp;quot; .. Time;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		Position = &amp;quot; &amp;quot; .. Position;&lt;br /&gt;
		At = &#039;&#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	Page, Pages, Sheet, Sheets = format_pages_sheets (Page, Pages, Sheet, Sheets, config.CitationClass, Periodical_origin, sepc, NoPP, use_lowercase);&lt;br /&gt;
&lt;br /&gt;
	At = is_set(At) and (sepc .. &amp;quot; &amp;quot; .. At) or &amp;quot;&amp;quot;;&lt;br /&gt;
	Position = is_set(Position) and (sepc .. &amp;quot; &amp;quot; .. Position) or &amp;quot;&amp;quot;;&lt;br /&gt;
	if config.CitationClass == &#039;map&#039; then&lt;br /&gt;
		local Section = A[&#039;Section&#039;];&lt;br /&gt;
		local Sections = A[&#039;Sections&#039;];&lt;br /&gt;
		local Inset = A[&#039;Inset&#039;];&lt;br /&gt;
		&lt;br /&gt;
		if is_set( Inset ) then&lt;br /&gt;
			Inset = sepc .. &amp;quot; &amp;quot; .. wrap_msg (&#039;inset&#039;, Inset, use_lowercase);&lt;br /&gt;
		end			&lt;br /&gt;
&lt;br /&gt;
		if is_set( Sections ) then&lt;br /&gt;
			Section = sepc .. &amp;quot; &amp;quot; .. wrap_msg (&#039;sections&#039;, Sections, use_lowercase);&lt;br /&gt;
		elseif is_set( Section ) then&lt;br /&gt;
			Section = sepc .. &amp;quot; &amp;quot; .. wrap_msg (&#039;section&#039;, Section, use_lowercase);&lt;br /&gt;
		end&lt;br /&gt;
		At = At .. Inset .. Section;		&lt;br /&gt;
	end	&lt;br /&gt;
&lt;br /&gt;
	if is_set (Language) then&lt;br /&gt;
		Language = language_parameter (Language);								-- format, categories, name from ISO639-1, etc&lt;br /&gt;
	else&lt;br /&gt;
		Language=&amp;quot;&amp;quot;;															-- language not specified so make sure this is an empty string;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	Others = is_set(Others) and (sepc .. &amp;quot; &amp;quot; .. Others) or &amp;quot;&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	if is_set (Translators) then&lt;br /&gt;
		Others = sepc .. &#039; 由&#039; .. Translators .. &#039;翻译 &#039; .. Others; &lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	TitleNote = is_set(TitleNote) and (sepc .. &amp;quot; &amp;quot; .. TitleNote) or &amp;quot;&amp;quot;;&lt;br /&gt;
	if is_set (Edition) then&lt;br /&gt;
		if Edition:match (&#039;%f[%a][Ee]d%.?$&#039;) or Edition:match (&#039;%f[%a][Ee]dition$&#039;) then&lt;br /&gt;
			add_maint_cat (&#039;extra_text&#039;, &#039;edition&#039;);&lt;br /&gt;
		end&lt;br /&gt;
		Edition = &amp;quot; &amp;quot; .. wrap_msg (&#039;edition&#039;, Edition);&lt;br /&gt;
	else&lt;br /&gt;
		Edition = &#039;&#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	Series = is_set(Series) and (sepc .. &amp;quot; &amp;quot; .. Series) or &amp;quot;&amp;quot;;&lt;br /&gt;
	OrigYear = is_set(OrigYear) and (&amp;quot; [&amp;quot; .. OrigYear .. &amp;quot;]&amp;quot;) or &amp;quot;&amp;quot;;&lt;br /&gt;
	Agency = is_set(Agency) and (sepc .. &amp;quot; &amp;quot; .. Agency) or &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	Volume = format_volume_issue (Volume, Issue, config.CitationClass, Periodical_origin, sepc, use_lowercase);&lt;br /&gt;
&lt;br /&gt;
	------------------------------------ totally unrelated data&lt;br /&gt;
	if is_set(Via) then&lt;br /&gt;
		Via = &amp;quot; &amp;quot; .. wrap_msg (&#039;via&#039;, Via);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Subscription implies paywall; Registration does not.  If both are used in a citation, the subscription required link&lt;br /&gt;
note is displayed. There are no error messages for this condition.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
	if is_set (SubscriptionRequired) then&lt;br /&gt;
		SubscriptionRequired = sepc .. &amp;quot; &amp;quot; .. cfg.messages[&#039;subscription&#039;];		-- subscription required message&lt;br /&gt;
	elseif is_set (RegistrationRequired) then&lt;br /&gt;
		SubscriptionRequired = sepc .. &amp;quot; &amp;quot; .. cfg.messages[&#039;registration&#039;];		-- registration required message&lt;br /&gt;
	else&lt;br /&gt;
		SubscriptionRequired = &#039;&#039;;												-- either or both might be set to something other than yes true y&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set(AccessDate) then&lt;br /&gt;
		local retrv_text = &amp;quot; &amp;quot; .. cfg.messages[&#039;retrieved&#039;]&lt;br /&gt;
&lt;br /&gt;
		AccessDate = nowrap_date (AccessDate);									-- wrap in nowrap span if date in appropriate format&lt;br /&gt;
		if (sepc ~= &amp;quot;.&amp;quot;) then retrv_text = retrv_text:lower() end				-- if &#039;citation&#039;, lower case&lt;br /&gt;
		AccessDate = substitute (retrv_text, AccessDate);						-- add retrieved text&lt;br /&gt;
																				-- neither of these work; don&#039;t know why; it seems that substitute() isn&#039;t being called	&lt;br /&gt;
		AccessDate = substitute (cfg.presentation[&#039;accessdate&#039;], {sepc, AccessDate});	-- allow editors to hide accessdates&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if is_set(ID) then ID = sepc ..&amp;quot; &amp;quot;.. ID; end&lt;br /&gt;
   	if &amp;quot;thesis&amp;quot; == config.CitationClass and is_set(Docket) then&lt;br /&gt;
		ID = sepc ..&amp;quot; Docket &amp;quot;.. Docket .. ID;&lt;br /&gt;
	end&lt;br /&gt;
   	if &amp;quot;report&amp;quot; == config.CitationClass and is_set(Docket) then					-- for cite report when |docket= is set&lt;br /&gt;
		ID = sepc .. &#039; &#039; .. Docket;												-- overwrite ID even if |id= is set&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	ID_list = build_id_list( ID_list, {DoiBroken = DoiBroken, ASINTLD = ASINTLD, IgnoreISBN = IgnoreISBN, Embargo=Embargo, Class = Class} );&lt;br /&gt;
&lt;br /&gt;
	if is_set(URL) then&lt;br /&gt;
		URL = &amp;quot; &amp;quot; .. external_link( URL, nil, URLorigin );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set(Quote) then&lt;br /&gt;
		if Quote:sub(1,1) == &#039;&amp;quot;&#039; and Quote:sub(-1,-1) == &#039;&amp;quot;&#039; then				-- if first and last characters of quote are quote marks&lt;br /&gt;
			Quote = Quote:sub(2,-2);											-- strip them off&lt;br /&gt;
		end&lt;br /&gt;
		Quote = sepc ..&amp;quot; &amp;quot; .. wrap_style (&#039;quoted-text&#039;, Quote ); 				-- wrap in &amp;lt;q&amp;gt;...&amp;lt;/q&amp;gt; tags&lt;br /&gt;
		PostScript = &amp;quot;&amp;quot;;														-- cs1|2 does not supply terminal punctuation when |quote= is set&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local Archived&lt;br /&gt;
	if is_set(ArchiveURL) then&lt;br /&gt;
		if not is_set(ArchiveDate) then&lt;br /&gt;
			ArchiveDate = set_error(&#039;archive_missing_date&#039;);&lt;br /&gt;
		end&lt;br /&gt;
		if &amp;quot;no&amp;quot; == DeadURL then&lt;br /&gt;
			local arch_text = cfg.messages[&#039;archived&#039;];&lt;br /&gt;
			if sepc ~= &amp;quot;.&amp;quot; then arch_text = arch_text:lower() end&lt;br /&gt;
			Archived = sepc .. &amp;quot; &amp;quot; .. substitute( cfg.messages[&#039;archived-not-dead&#039;],&lt;br /&gt;
				{ external_link( ArchiveURL, arch_text, A:ORIGIN(&#039;ArchiveURL&#039;) ) .. ArchiveFormat, ArchiveDate } );&lt;br /&gt;
			if not is_set(OriginalURL) then&lt;br /&gt;
				Archived = Archived .. &amp;quot; &amp;quot; .. set_error(&#039;archive_missing_url&#039;);							   &lt;br /&gt;
			end&lt;br /&gt;
		elseif is_set(OriginalURL) then											-- DeadURL is empty, &#039;yes&#039;, &#039;true&#039;, &#039;y&#039;, &#039;unfit&#039;, &#039;usurped&#039;&lt;br /&gt;
			local arch_text = cfg.messages[&#039;archived-dead&#039;];&lt;br /&gt;
			if sepc ~= &amp;quot;.&amp;quot; then arch_text = arch_text:lower() end&lt;br /&gt;
			if in_array (DeadURL, {&#039;unfit&#039;, &#039;usurped&#039;}) then&lt;br /&gt;
				Archived = sepc .. &amp;quot; &amp;quot; .. &#039;Archived from the original on &#039; .. ArchiveDate;	-- format already styled&lt;br /&gt;
			else																-- DeadURL is empty, &#039;yes&#039;, &#039;true&#039;, or &#039;y&#039;&lt;br /&gt;
				Archived = sepc .. &amp;quot; &amp;quot; .. substitute( arch_text,&lt;br /&gt;
					{ external_link( OriginalURL, cfg.messages[&#039;original&#039;], OriginalURLorigin ) .. OriginalFormat, ArchiveDate } );	-- format already styled&lt;br /&gt;
			end	&lt;br /&gt;
		else&lt;br /&gt;
			local arch_text = cfg.messages[&#039;archived-missing&#039;];&lt;br /&gt;
			if sepc ~= &amp;quot;.&amp;quot; then arch_text = arch_text:lower() end&lt;br /&gt;
			Archived = sepc .. &amp;quot; &amp;quot; .. substitute( arch_text, &lt;br /&gt;
				{ set_error(&#039;archive_missing_url&#039;), ArchiveDate } );&lt;br /&gt;
		end&lt;br /&gt;
	elseif is_set (ArchiveFormat) then&lt;br /&gt;
		Archived = ArchiveFormat;												-- if set and ArchiveURL not set ArchiveFormat has error message&lt;br /&gt;
	else&lt;br /&gt;
		Archived = &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local Lay = &#039;&#039;;&lt;br /&gt;
	if is_set(LayURL) then&lt;br /&gt;
		if is_set(LayDate) then LayDate = &amp;quot; (&amp;quot; .. LayDate .. &amp;quot;)&amp;quot; end&lt;br /&gt;
		if is_set(LaySource) then &lt;br /&gt;
			LaySource = &amp;quot; &amp;amp;ndash; &#039;&#039;&amp;quot; .. safe_for_italics(LaySource) .. &amp;quot;&#039;&#039;&amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			LaySource = &amp;quot;&amp;quot;;&lt;br /&gt;
		end&lt;br /&gt;
		if sepc == &#039;.&#039; then&lt;br /&gt;
			Lay = sepc .. &amp;quot; &amp;quot; .. external_link( LayURL, cfg.messages[&#039;lay summary&#039;], A:ORIGIN(&#039;LayURL&#039;) ) .. LayFormat .. LaySource .. LayDate&lt;br /&gt;
		else&lt;br /&gt;
			Lay = sepc .. &amp;quot; &amp;quot; .. external_link( LayURL, cfg.messages[&#039;lay summary&#039;]:lower(), A:ORIGIN(&#039;LayURL&#039;) ) .. LayFormat .. LaySource .. LayDate&lt;br /&gt;
		end			&lt;br /&gt;
	elseif is_set (LayFormat) then												-- Test if |lay-format= is given without giving a |lay-url=&lt;br /&gt;
		Lay = sepc .. LayFormat;												-- if set and LayURL not set, then LayFormat has error message&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set(Transcript) then&lt;br /&gt;
		if is_set(TranscriptURL) then&lt;br /&gt;
			Transcript = external_link( TranscriptURL, Transcript, TranscriptURLorigin );&lt;br /&gt;
		end&lt;br /&gt;
		Transcript = sepc .. &#039; &#039; .. Transcript .. TranscriptFormat;&lt;br /&gt;
	elseif is_set(TranscriptURL) then&lt;br /&gt;
		Transcript = external_link( TranscriptURL, nil, TranscriptURLorigin );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local Publisher;&lt;br /&gt;
	if is_set(Periodical) and&lt;br /&gt;
		not in_array(config.CitationClass, {&amp;quot;encyclopaedia&amp;quot;,&amp;quot;web&amp;quot;,&amp;quot;pressrelease&amp;quot;,&amp;quot;podcast&amp;quot;}) then&lt;br /&gt;
		if is_set(PublisherName) then&lt;br /&gt;
			if is_set(PublicationPlace) then&lt;br /&gt;
				Publisher = PublicationPlace .. &amp;quot;: &amp;quot; .. PublisherName;&lt;br /&gt;
			else&lt;br /&gt;
				Publisher = PublisherName;  &lt;br /&gt;
			end&lt;br /&gt;
		elseif is_set(PublicationPlace) then&lt;br /&gt;
			Publisher= PublicationPlace;&lt;br /&gt;
		else &lt;br /&gt;
			Publisher = &amp;quot;&amp;quot;;&lt;br /&gt;
		end&lt;br /&gt;
		if is_set(Publisher) then&lt;br /&gt;
			Publisher = &amp;quot; (&amp;quot; .. Publisher .. &amp;quot;)&amp;quot;;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if is_set(PublisherName) then&lt;br /&gt;
			if is_set(PublicationPlace) then&lt;br /&gt;
				Publisher = sepc .. &amp;quot; &amp;quot; .. PublicationPlace .. &amp;quot;: &amp;quot; .. PublisherName;&lt;br /&gt;
			else&lt;br /&gt;
				Publisher = sepc .. &amp;quot; &amp;quot; .. PublisherName;  &lt;br /&gt;
			end			&lt;br /&gt;
		elseif is_set(PublicationPlace) then &lt;br /&gt;
			Publisher= sepc .. &amp;quot; &amp;quot; .. PublicationPlace;&lt;br /&gt;
		else &lt;br /&gt;
			Publisher = &#039;&#039;;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Several of the above rely upon detecting this as nil, so do it last.&lt;br /&gt;
	if is_set(Periodical) then&lt;br /&gt;
		if is_set(Title) or is_set(TitleNote) then &lt;br /&gt;
			Periodical = sepc .. &amp;quot; &amp;quot; .. wrap_style (&#039;italic-title&#039;, Periodical) &lt;br /&gt;
		else &lt;br /&gt;
			Periodical = wrap_style (&#039;italic-title&#039;, Periodical)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Handle the oddity that is cite speech.  This code overrides whatever may be the value assigned to TitleNote (through |department=) and forces it to be &amp;quot; (Speech)&amp;quot; so that&lt;br /&gt;
the annotation directly follows the |title= parameter value in the citation rather than the |event= parameter value (if provided).&lt;br /&gt;
]]&lt;br /&gt;
	if &amp;quot;speech&amp;quot; == config.CitationClass then				-- cite speech only&lt;br /&gt;
		TitleNote = &amp;quot; (Speech)&amp;quot;;							-- annotate the citation&lt;br /&gt;
		if is_set (Periodical) then							-- if Periodical, perhaps because of an included |website= or |journal= parameter &lt;br /&gt;
			if is_set (Conference) then						-- and if |event= is set&lt;br /&gt;
				Conference = Conference .. sepc .. &amp;quot; &amp;quot;;		-- then add appropriate punctuation to the end of the Conference variable before rendering&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Piece all bits together at last.  Here, all should be non-nil.&lt;br /&gt;
	-- We build things this way because it is more efficient in LUA&lt;br /&gt;
	-- not to keep reassigning to the same string variable over and over.&lt;br /&gt;
&lt;br /&gt;
	local tcommon;&lt;br /&gt;
	local tcommon2;																-- used for book cite when |contributor= is set&lt;br /&gt;
	&lt;br /&gt;
	if in_array(config.CitationClass, {&amp;quot;journal&amp;quot;,&amp;quot;citation&amp;quot;}) and is_set(Periodical) then&lt;br /&gt;
		if is_set(Others) then Others = Others .. sepc .. &amp;quot; &amp;quot; end&lt;br /&gt;
		tcommon = safe_join( {Others, Title, TitleNote, Conference, Periodical, Format, TitleType, Series, &lt;br /&gt;
			Edition, Publisher, Agency}, sepc );&lt;br /&gt;
		&lt;br /&gt;
	elseif in_array(config.CitationClass, {&amp;quot;book&amp;quot;,&amp;quot;citation&amp;quot;}) and not is_set(Periodical) then		-- special cases for book cites&lt;br /&gt;
		if is_set (Contributors) then											-- when we are citing foreword, preface, introduction, etc&lt;br /&gt;
			tcommon = safe_join( {Title, TitleNote}, sepc );					-- author and other stuff will come after this and before tcommon2&lt;br /&gt;
			tcommon2 = safe_join( {Conference, Periodical, Format, TitleType, Series, Volume, Others, Edition, Publisher, Agency}, sepc );&lt;br /&gt;
		else&lt;br /&gt;
			tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Volume, Others, Edition, Publisher, Agency}, sepc );&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif &#039;map&#039; == config.CitationClass then									-- special cases for cite map&lt;br /&gt;
		if is_set (Chapter) then												-- map in a book; TitleType is part of Chapter&lt;br /&gt;
			tcommon = safe_join( {Title, Format, Edition, Scale, Series, Cartography, Others, Publisher, Volume}, sepc );&lt;br /&gt;
		elseif is_set (Periodical) then											-- map in a periodical&lt;br /&gt;
			tcommon = safe_join( {Title, TitleType, Format, Periodical, Scale, Series, Cartography, Others, Publisher, Volume}, sepc );&lt;br /&gt;
		else																	-- a sheet or stand-alone map&lt;br /&gt;
			tcommon = safe_join( {Title, TitleType, Format, Edition, Scale, Series, Cartography, Others, Publisher}, sepc );&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
	elseif &#039;episode&#039; == config.CitationClass then								-- special case for cite episode&lt;br /&gt;
		tcommon = safe_join( {Title, TitleNote, TitleType, Series, Transcript, Edition, Publisher}, sepc );&lt;br /&gt;
	else																		-- all other CS1 templates&lt;br /&gt;
		tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, &lt;br /&gt;
			Volume, Others, Edition, Publisher, Agency}, sepc );&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #ID_list &amp;gt; 0 then&lt;br /&gt;
		ID_list = safe_join( { sepc .. &amp;quot; &amp;quot;,  table.concat( ID_list, sepc .. &amp;quot; &amp;quot; ), ID }, sepc );&lt;br /&gt;
	else&lt;br /&gt;
		ID_list = ID;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- LOCAL&lt;br /&gt;
	local xDate = Date&lt;br /&gt;
	local pgtext = Position .. Sheet .. Sheets .. Page .. Pages .. At;&lt;br /&gt;
	if ( is_set(Periodical) and Date ~= &#039;&#039; and&lt;br /&gt;
		not in_array(config.CitationClass, {&amp;quot;encyclopaedia&amp;quot;,&amp;quot;web&amp;quot;}) )&lt;br /&gt;
		or ( in_array(config.CitationClass, {&amp;quot;book&amp;quot;,&amp;quot;news&amp;quot;}) ) then&lt;br /&gt;
		if in_array(config.CitationClass, {&amp;quot;journal&amp;quot;,&amp;quot;citation&amp;quot;}) and ( Volume ~= &#039;&#039; or Issue ~= &#039;&#039; ) then&lt;br /&gt;
			xDate = xDate .. &#039;,&#039; .. Volume&lt;br /&gt;
		end&lt;br /&gt;
		xDate = xDate .. pgtext&lt;br /&gt;
		pgtext = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if PublicationDate and PublicationDate ~= &#039;&#039; then&lt;br /&gt;
		xDate = xDate .. &#039; (&#039; .. PublicationDate .. &#039;)&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if OrigYear ~= &#039;&#039; then&lt;br /&gt;
		xDate = xDate .. OrigYear&lt;br /&gt;
	end&lt;br /&gt;
	if AccessDate ~= &#039;&#039; then&lt;br /&gt;
		xDate = xDate .. &#039; &#039; .. AccessDate&lt;br /&gt;
	end&lt;br /&gt;
	if xDate ~= &#039;&#039; then&lt;br /&gt;
		xDate = sepc .. &#039; &#039; .. xDate&lt;br /&gt;
	end&lt;br /&gt;
	-- END LOCAL&lt;br /&gt;
	&lt;br /&gt;
	local idcommon = safe_join( { URL, xDate, ID_list, Archived, Via, SubscriptionRequired, Lay, Language, Quote }, sepc );&lt;br /&gt;
	local text;&lt;br /&gt;
&lt;br /&gt;
	if is_set(Authors) then&lt;br /&gt;
		if is_set(Coauthors) then&lt;br /&gt;
			if &#039;vanc&#039; == NameListFormat then									-- separate authors and coauthors with proper name-list-separator&lt;br /&gt;
				Authors = Authors .. &#039;, &#039; .. Coauthors;&lt;br /&gt;
			else&lt;br /&gt;
				Authors = Authors .. &#039;; &#039; .. Coauthors;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		Authors = terminate_name_list (Authors, sepc);						-- when no date, terminate with 0 or 1 sepc and a space&lt;br /&gt;
		if is_set(Editors) then&lt;br /&gt;
			local in_text = &amp;quot; &amp;quot;;&lt;br /&gt;
			local post_text = &amp;quot;&amp;quot;;&lt;br /&gt;
			if is_set(Chapter) and 0 == #c then&lt;br /&gt;
				in_text = in_text .. cfg.messages[&#039;in&#039;] .. &amp;quot; &amp;quot;&lt;br /&gt;
				if (sepc ~= &#039;.&#039;) then in_text = in_text:lower() end				-- lowercase for cs2&lt;br /&gt;
			else&lt;br /&gt;
				if EditorCount &amp;lt;= 1 then&lt;br /&gt;
					post_text = &amp;quot;, &amp;quot; .. cfg.messages[&#039;editor&#039;];&lt;br /&gt;
				else&lt;br /&gt;
					post_text = &amp;quot;, &amp;quot; .. cfg.messages[&#039;editors&#039;];&lt;br /&gt;
				end&lt;br /&gt;
			end &lt;br /&gt;
			Editors = terminate_name_list (in_text .. Editors .. post_text, sepc);	-- terminate with 0 or 1 sepc and a space&lt;br /&gt;
		end&lt;br /&gt;
		if is_set (Contributors) then											-- book cite and we&#039;re citing the intro, preface, etc&lt;br /&gt;
			local by_text = sepc .. &#039; &#039; .. cfg.messages[&#039;by&#039;] .. &#039; &#039;;&lt;br /&gt;
			if (sepc ~= &#039;.&#039;) then by_text = by_text:lower() end					-- lowercase for cs2&lt;br /&gt;
			Authors = by_text .. Authors;										-- author follows title so tweak it here&lt;br /&gt;
			if is_set (Editors) then											-- when Editors make sure that Authors gets terminated&lt;br /&gt;
				Authors = terminate_name_list (Authors, sepc);					-- terminate with 0 or 1 sepc and a space&lt;br /&gt;
			end&lt;br /&gt;
			Contributors = terminate_name_list (Contributors, sepc);		-- terminate with 0 or 1 sepc and a space&lt;br /&gt;
			text = safe_join( {Contributors, Chapter, tcommon, Authors, Place, Editors, tcommon2, pgtext, idcommon }, sepc );&lt;br /&gt;
		else&lt;br /&gt;
			text = safe_join( {Authors, Chapter, Place, Editors, tcommon, pgtext, idcommon }, sepc );&lt;br /&gt;
		end&lt;br /&gt;
	elseif is_set(Editors) then&lt;br /&gt;
		if EditorCount &amp;lt;= 1 then&lt;br /&gt;
			Editors = Editors .. &amp;quot; (&amp;quot; .. cfg.messages[&#039;editor&#039;] .. &amp;quot;)&amp;quot; .. sepc .. &amp;quot; &amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			Editors = Editors .. &amp;quot; (&amp;quot; .. cfg.messages[&#039;editors&#039;] .. &amp;quot;)&amp;quot; .. sepc .. &amp;quot; &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		text = safe_join( {Editors, Chapter, Place, tcommon, pgtext, idcommon}, sepc );&lt;br /&gt;
	else&lt;br /&gt;
		if config.CitationClass==&amp;quot;journal&amp;quot; and is_set(Periodical) then&lt;br /&gt;
			text = safe_join( {Chapter, Place, tcommon, pgtext, idcommon}, sepc );&lt;br /&gt;
		else&lt;br /&gt;
			text = safe_join( {Chapter, Place, tcommon, pgtext, idcommon}, sepc );&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if is_set(PostScript) and PostScript ~= sepc then&lt;br /&gt;
		text = safe_join( {text, sepc}, sepc );  --Deals with italics, spaces, etc.&lt;br /&gt;
		text = text:sub(1,-sepc:len()-1);&lt;br /&gt;
	end	&lt;br /&gt;
	&lt;br /&gt;
	text = safe_join( {text, PostScript}, sepc );&lt;br /&gt;
&lt;br /&gt;
	-- Now enclose the whole thing in a &amp;lt;cite/&amp;gt; element&lt;br /&gt;
	local options = {};&lt;br /&gt;
	&lt;br /&gt;
	if is_set(config.CitationClass) and config.CitationClass ~= &amp;quot;citation&amp;quot; then&lt;br /&gt;
		options.class = config.CitationClass;&lt;br /&gt;
		options.class = &amp;quot;citation &amp;quot; .. config.CitationClass;					-- class=citation required for blue highlight when used with |ref=&lt;br /&gt;
	else&lt;br /&gt;
		options.class = &amp;quot;citation&amp;quot;;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if is_set(Ref) and Ref:lower() ~= &amp;quot;none&amp;quot; then								-- set reference anchor if appropriate&lt;br /&gt;
		local id = Ref&lt;br /&gt;
		if (&#039;harv&#039; == Ref ) then&lt;br /&gt;
			local namelist = {};												-- holds selected contributor, author, editor name list&lt;br /&gt;
--			local year = first_set (Year, anchor_year);							-- Year first for legacy citations and for YMD dates that require disambiguation&lt;br /&gt;
			local year = first_set ({Year, anchor_year}, 2);					-- Year first for legacy citations and for YMD dates that require disambiguation&lt;br /&gt;
&lt;br /&gt;
			if #c &amp;gt; 0 then														-- if there is a contributor list&lt;br /&gt;
				namelist = c;													-- select it&lt;br /&gt;
			elseif #a &amp;gt; 0 then													-- or an author list&lt;br /&gt;
				namelist = a;&lt;br /&gt;
			elseif #e &amp;gt; 0 then													-- or an editor list&lt;br /&gt;
				namelist = e;&lt;br /&gt;
			end&lt;br /&gt;
			id = anchor_id (namelist, year);									-- go make the CITEREF anchor&lt;br /&gt;
		end&lt;br /&gt;
		options.id = id;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if string.len(text:gsub(&amp;quot;&amp;lt;span[^&amp;gt;/]*&amp;gt;.-&amp;lt;/span&amp;gt;&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;%b&amp;lt;&amp;gt;&amp;quot;,&amp;quot;&amp;quot;)) &amp;lt;= 2 then&lt;br /&gt;
		z.error_categories = {};&lt;br /&gt;
		text = set_error(&#039;empty_citation&#039;);&lt;br /&gt;
		z.message_tail = {};&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if is_set(options.id) then &lt;br /&gt;
		text = &#039;&amp;lt;cite id=&amp;quot;&#039; .. mw.uri.anchorEncode(options.id) ..&#039;&amp;quot; class=&amp;quot;&#039; .. mw.text.nowiki(options.class) .. &#039;&amp;quot;&amp;gt;&#039; .. text .. &amp;quot;&amp;lt;/cite&amp;gt;&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		text = &#039;&amp;lt;cite class=&amp;quot;&#039; .. mw.text.nowiki(options.class) .. &#039;&amp;quot;&amp;gt;&#039; .. text .. &amp;quot;&amp;lt;/cite&amp;gt;&amp;quot;;&lt;br /&gt;
	end		&lt;br /&gt;
&lt;br /&gt;
	local empty_span = &#039;&amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	-- Note: Using display: none on the COinS span breaks some clients.&lt;br /&gt;
	local OCinS = &#039;&amp;lt;span title=&amp;quot;&#039; .. OCinSoutput .. &#039;&amp;quot; class=&amp;quot;Z3988&amp;quot;&amp;gt;&#039; .. empty_span .. &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	text = text .. OCinS;&lt;br /&gt;
	&lt;br /&gt;
	if #z.message_tail ~= 0 then&lt;br /&gt;
		text = text .. &amp;quot; &amp;quot;;&lt;br /&gt;
		for i,v in ipairs( z.message_tail ) do&lt;br /&gt;
			if is_set(v[1]) then&lt;br /&gt;
				if i == #z.message_tail then&lt;br /&gt;
					text = text .. error_comment( v[1], v[2] );&lt;br /&gt;
				else&lt;br /&gt;
					text = text .. error_comment( v[1] .. &amp;quot;; &amp;quot;, v[2] );&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #z.maintenance_cats ~= 0 then&lt;br /&gt;
		text = text .. &#039;&amp;lt;span class=&amp;quot;citation-comment&amp;quot; style=&amp;quot;display:none; color:#33aa33&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
		for _, v in ipairs( z.maintenance_cats ) do								-- append maintenance categories&lt;br /&gt;
			text = text .. &#039; &#039; .. v .. &#039; ([[:Category:&#039; .. v ..&#039;|link]])&#039;;&lt;br /&gt;
		end&lt;br /&gt;
		text = text .. &#039;&amp;lt;/span&amp;gt;&#039;;	-- maintenance mesages (realy just the names of the categories for now)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	no_tracking_cats = no_tracking_cats:lower();&lt;br /&gt;
	if in_array(no_tracking_cats, {&amp;quot;&amp;quot;, &amp;quot;no&amp;quot;, &amp;quot;false&amp;quot;, &amp;quot;n&amp;quot;}) then&lt;br /&gt;
		for _, v in ipairs( z.error_categories ) do&lt;br /&gt;
			text = text .. &#039;[[Category:&#039; .. v ..&#039;]]&#039;;&lt;br /&gt;
		end&lt;br /&gt;
		for _, v in ipairs( z.maintenance_cats ) do								-- append maintenance categories&lt;br /&gt;
			text = text .. &#039;[[Category:&#039; .. v ..&#039;]]&#039;;&lt;br /&gt;
		end&lt;br /&gt;
		for _, v in ipairs( z.properties_cats ) do								-- append maintenance categories&lt;br /&gt;
			text = text .. &#039;[[Category:&#039; .. v ..&#039;]]&#039;;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H A S _ I N V I S I B L E _ C H A R S &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
This function searches a parameter&#039;s value for nonprintable or invisible characters.  The search stops at the first match.&lt;br /&gt;
&lt;br /&gt;
Sometime after this module is done with rendering a citation, some C0 control characters are replaced with the&lt;br /&gt;
replacement character.  That replacement character is not detected by this test though it is visible to readers&lt;br /&gt;
of the rendered citation.  This function will detect the replacement character when it is part of the wikisource.&lt;br /&gt;
&lt;br /&gt;
Output of this function is an error message that identifies the character or the Unicode group that the character&lt;br /&gt;
belongs to along with its position in the parameter value.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
--[[&lt;br /&gt;
local function has_invisible_chars (param, v)&lt;br /&gt;
	local position = &#039;&#039;;&lt;br /&gt;
	local i=1;&lt;br /&gt;
&lt;br /&gt;
	while cfg.invisible_chars[i] do&lt;br /&gt;
		local char=cfg.invisible_chars[i][1]									-- the character or group name&lt;br /&gt;
		local pattern=cfg.invisible_chars[i][2]									-- the pattern used to find it&lt;br /&gt;
		v = mw.text.unstripNoWiki( v );											-- remove nowiki stripmarkers&lt;br /&gt;
		position = mw.ustring.find (v, pattern)									-- see if the parameter value contains characters that match the pattern&lt;br /&gt;
		if position then&lt;br /&gt;
			table.insert( z.message_tail, { set_error( &#039;invisible_char&#039;, {char, wrap_style (&#039;parameter&#039;, param), position}, true ) } );	-- add error message&lt;br /&gt;
			return;																-- and done with this parameter&lt;br /&gt;
		end&lt;br /&gt;
		i=i+1;																	-- bump our index&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; Z . C I T A T I O N &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This is used by templates such as {{cite book}} to create the actual citation text.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function z.citation(frame)&lt;br /&gt;
	local pframe = frame:getParent()&lt;br /&gt;
	local validation;&lt;br /&gt;
	&lt;br /&gt;
	if nil ~= string.find (frame:getTitle(), &#039;sandbox&#039;, 1, true) then			-- did the {{#invoke:}} use sandbox version?&lt;br /&gt;
		cfg = mw.loadData (&#039;Module:Citation/CS1/Configuration/sandbox&#039;);		-- load sandbox versions of Configuration and Whitelist and ...&lt;br /&gt;
		whitelist = mw.loadData (&#039;Module:Citation/CS1/Whitelist/sandbox&#039;);&lt;br /&gt;
		validation = require (&#039;Module:Citation/CS1/Date_validation/sandbox&#039;);	-- ... sandbox version of date validation code&lt;br /&gt;
&lt;br /&gt;
	else																		-- otherwise&lt;br /&gt;
		cfg = mw.loadData (&#039;Module:Citation/CS1/Configuration&#039;);				-- load live versions of Configuration and Whitelist and ...&lt;br /&gt;
		whitelist = mw.loadData (&#039;Module:Citation/CS1/Whitelist&#039;);&lt;br /&gt;
		validation = require (&#039;Module:Citation/CS1/Date_validation&#039;);			-- ... live version of date validation code&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	dates = validation.dates;													-- imported functions&lt;br /&gt;
	year_date_check = validation.year_date_check;&lt;br /&gt;
&lt;br /&gt;
	local args = {};&lt;br /&gt;
	local suggestions = {};&lt;br /&gt;
	local error_text, error_state;&lt;br /&gt;
&lt;br /&gt;
	local config = {};&lt;br /&gt;
	for k, v in pairs( frame.args ) do&lt;br /&gt;
		config[k] = v;&lt;br /&gt;
		args[k] = v;	   &lt;br /&gt;
	end	&lt;br /&gt;
&lt;br /&gt;
	local capture;																-- the single supported capture when matching unknown parameters using patterns&lt;br /&gt;
	for k, v in pairs( pframe.args ) do&lt;br /&gt;
		if v ~= &#039;&#039; then&lt;br /&gt;
			if not validate( k ) then			&lt;br /&gt;
				error_text = &amp;quot;&amp;quot;;&lt;br /&gt;
				if type( k ) ~= &#039;string&#039; then&lt;br /&gt;
					-- Exclude empty numbered parameters&lt;br /&gt;
					if v:match(&amp;quot;%S+&amp;quot;) ~= nil then&lt;br /&gt;
						error_text, error_state = set_error( &#039;text_ignored&#039;, {v}, true );&lt;br /&gt;
					end&lt;br /&gt;
				elseif validate( k:lower() ) then &lt;br /&gt;
					error_text, error_state = set_error( &#039;parameter_ignored_suggest&#039;, {k, k:lower()}, true );&lt;br /&gt;
				else&lt;br /&gt;
					if nil == suggestions.suggestions then						-- if this table is nil then we need to load it&lt;br /&gt;
						if nil ~= string.find (frame:getTitle(), &#039;sandbox&#039;, 1, true) then			-- did the {{#invoke:}} use sandbox version?&lt;br /&gt;
							suggestions = mw.loadData( &#039;Module:Citation/CS1/Suggestions/sandbox&#039; );	-- use the sandbox version&lt;br /&gt;
						else&lt;br /&gt;
							suggestions = mw.loadData( &#039;Module:Citation/CS1/Suggestions&#039; );			-- use the live version&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					for pattern, param in pairs (suggestions.patterns) do		-- loop through the patterns to see if we can suggest a proper parameter&lt;br /&gt;
						capture = k:match (pattern);							-- the whole match if no caputre in pattern else the capture if a match&lt;br /&gt;
						if capture then											-- if the pattern matches &lt;br /&gt;
							param = substitute( param, capture );				-- add the capture to the suggested parameter (typically the enumerator)&lt;br /&gt;
							error_text, error_state = set_error( &#039;parameter_ignored_suggest&#039;, {k, param}, true );	-- set the error message&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					if not is_set (error_text) then								-- couldn&#039;t match with a pattern, is there an expicit suggestion?&lt;br /&gt;
						if suggestions.suggestions[ k:lower() ] ~= nil then&lt;br /&gt;
							error_text, error_state = set_error( &#039;parameter_ignored_suggest&#039;, {k, suggestions.suggestions[ k:lower() ]}, true );&lt;br /&gt;
						else&lt;br /&gt;
							error_text, error_state = set_error( &#039;parameter_ignored&#039;, {k}, true );&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end				  &lt;br /&gt;
				if error_text ~= &#039;&#039; then&lt;br /&gt;
					table.insert( z.message_tail, {error_text, error_state} );&lt;br /&gt;
				end				&lt;br /&gt;
			end&lt;br /&gt;
			args[k] = v;&lt;br /&gt;
		elseif args[k] ~= nil or (k == &#039;postscript&#039;) then&lt;br /&gt;
			args[k] = v;&lt;br /&gt;
		end		&lt;br /&gt;
	end	&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs( args ) do&lt;br /&gt;
		if &#039;string&#039; == type (k) then											-- don&#039;t evaluate positional parameters&lt;br /&gt;
			has_invisible_chars (k, v);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return citation0( config, args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return z&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Module:CGroup/IT&amp;diff=7448</id>
		<title>Module:CGroup/IT</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Module:CGroup/IT&amp;diff=7448"/>
		<updated>2016-06-10T12:07:18Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​导入1个版本：Template:Cite web&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
&lt;br /&gt;
name = &#039;IT&#039;,&lt;br /&gt;
description = &#039;电脑和信息技术&#039;,&lt;br /&gt;
content = {&lt;br /&gt;
&lt;br /&gt;
{ type = &#039;text&#039;, text = [=[&lt;br /&gt;
请在本页编辑[[Portal:电脑和信息技术|-{zh-cn:电脑和信息技术; zh-tw:電腦和資訊科技;}-]]組的全文轉換&amp;lt;!--，机器人会定期更新被保护的[[Template:CGroup/IT]]页面--&amp;gt;。&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
您也可以使用&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://philip-bot.appspot.com/autoconvert?group=IT -{zh-cn:强制刷新; zh-tw:強制更新;}-]&amp;lt;/span&amp;gt;功能来立即更新[[Template:CGroup/IT]]页面！--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在编辑前，请阅读[[帮助:字词转换语法|-{zh:Help:字词转换语法; zh-hans:帮助:字词转换语法; zh-hk:幫助:字詞轉換語法; zh-tw:使用說明:字詞轉換語法;}-]]了解基本的语法，特别注意语法中带有“=&amp;gt;”的单向转换规则，若您没有充分理解该规则的涵义，就不要仓促修改！&lt;br /&gt;
&lt;br /&gt;
為了方便-{zh-cn:查找;zh-tw:尋找;}-，請按英文字母表順序排列。&lt;br /&gt;
&lt;br /&gt;
以下是與本頁面相關的轉換組：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 轉換組 || 說明&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:CGroup/Games]] || 電子遊戲相關&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:CGroup/Windows]] || 微軟視窗作業系統及其相關組件&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:CGroup/Electronics]] || 電子相關&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:CGroup/Communication]] || 通訊相關&lt;br /&gt;
|-&lt;br /&gt;
| [[Module:CGroup/MediaWiki]] || MediaWiki相關&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意：&#039;&#039;&#039;部分开源技术相关条目还需要加上[[Module:CGroup/free license|自由和共享授权条款的字词转换]]，语法是{{codespan|&amp;lt;nowiki&amp;gt;{{NoteTA|Gx=FL}}&amp;lt;/nowiki&amp;gt;}}（x代表任意数字）。&lt;br /&gt;
&lt;br /&gt;
[[Special:Permalink/31382571]]&lt;br /&gt;
&lt;br /&gt;
{{HideH|參考資料}}&lt;br /&gt;
* 微軟&lt;br /&gt;
** [https://www.microsoft.com/Language/en-US/Search.aspx Language Portal]（多語言）&lt;br /&gt;
* 台灣正體&lt;br /&gt;
** [http://terms.naer.edu.tw/ 國家教育研究院雙語詞彙、學術名詞暨辭書資訊網]&lt;br /&gt;
** [http://www.terms.org.tw:8080/phrase/query.jsp 兩岸名詞對照查詢系統]&lt;br /&gt;
* 大陆简体&lt;br /&gt;
** [http://www.cnctst.cn/ 全国科学技术名词审定委员会]&lt;br /&gt;
** [http://dict.cnki.net/ CNKI翻译助手]&lt;br /&gt;
{{HideF}}&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
]=] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;A.I.&#039;, rule = &#039;zh-cn:人工智能; zh-hk:人工智能; zh-tw:人工智慧; zh-sg:人工智慧;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;access&#039;, rule = &#039;訪問=&amp;gt;zh-cn:访问; 訪問=&amp;gt;zh-sg:访问; 訪問=&amp;gt;zh-tw:存取;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;access&#039;, rule = &#039;訪問=&amp;gt;zh-hk:存取; 訪問=&amp;gt;zh-mo:存取; 访问=&amp;gt;zh-tw:存取;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;access&#039;, rule = &#039;访问=&amp;gt;zh-hk:存取; 访问=&amp;gt;zh-mo:存取; 存取=&amp;gt;zh-cn:访问; 存取=&amp;gt;zh-sg:访问;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Access control list&#039;, rule = &#039;zh-cn:访问控制表;zh-tw:存取控制串列&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Access Multiplexer&#039;, rule = &#039;zh-cn:接入复用器;zh-tw:接取多工器&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Access Point&#039;, rule = &#039;zh-cn:接入点;zh-tw:存取點;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;account&#039;, rule = &#039;zh-cn:账号; zh-hk:賬號; zh-tw:帳號;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;account&#039;, rule = &#039;zh-cn:账户; zh-hk:賬戶; zh-tw:帳戶;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;activation&#039;, rule = &#039;zh-cn:激活; zh-tw:啟用;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;adapter&#039;, rule = &#039;zh-cn:适配器; zh-tw:介面卡;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;add-on&#039;, rule = &#039;zh-cn:附加组件; zh-tw:附加元件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;add-on&#039;, rule = &#039;zh-cn:扩展; zh-tw:擴充套件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;address bar&#039;, rule = &#039;zh-cn:地址栏; zh-tw:位址列;zh-hk:網址列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;address&#039;, rule = &#039;zh-cn:地址; zh-tw:位址; zh-hk:地址;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;advanced&#039;, rule = &#039;zh-cn:高级; zh-tw:進階; zh-hk:進階; zh-mo:進階; zh-sg:高级; &#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Advertising Area&#039;, rule = &#039;zh-cn:广告位; zh-tw:廣告區;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Agent-oriented programming&#039;, rule = &#039;zh-cn:面向代理编程; zh-tw:代理人導向編程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Album (online)&#039;, rule = &#039;zh-cn:相册; zh-tw:相簿;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;algorithm&#039;, rule = &#039;zh-cn:算法; zh-tw:演算法; zh-hk:演算法;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;analog&#039;, rule = &#039;zh-cn:模拟; zh-hk:模擬; zh-mo:模擬; &#039; },&lt;br /&gt;
-- 港台的「殺毒」有時有「清除病毒」的意思&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Antivirus&#039;, rule = &#039;zh-cn:杀毒; zh-tw:防毒; zh-hk:防毒&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Antivirus software&#039;, rule = &#039;zh-cn:杀毒软件; zh-tw:防毒軟體; zh-hk:防毒軟件&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;application&#039;, rule = &#039;zh-cn:应用程序; zh-tw:應用程式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Application Programming Interface&#039;, rule = &#039;zh-hans:应用程序接口; zh-hant:應用程式介面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;archives&#039;, rule = &#039;zh-hans:档案馆; zh-hant:檔案館;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;archives&#039;, rule = &#039;zh-hans:档案室; zh-hant:檔案室;&#039; },--防止技术上的错误&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;array (RAID)&#039;, rule = &#039;zh-cn:服务器阵列; zh-tw:伺服器陣列; zh-hk:伺服器陣列; zh-sg:伺服器阵列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;array (RAID)&#039;, rule = &#039;zh-cn:硬盘阵列; zh-tw:硬碟陣列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;array (RAID)&#039;, rule = &#039;zh-cn:磁盘阵列; zh-tw:磁碟陣列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;array (RAID)&#039;, rule = &#039;zh-cn:阵列服务器; zh-tw:陣列伺服器; zh-hk:陣列伺服器; zh-sg:阵列伺服器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;array (RAID)&#039;, rule = &#039;zh-cn:阵列硬盘; zh-tw:陣列硬碟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;array (RAID)&#039;, rule = &#039;zh-cn:aid阵列; zh-tw:aid陣列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;array (RAID)&#039;, rule = &#039;zh-cn:RAID阵列; zh-tw:RAID陣列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;array&#039;, rule = &#039;zh-cn:数组; zh-tw:陣列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;assembler&#039;, rule = &#039;zh-cn:汇编; zh-tw:組譯;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Assembly language&#039;, rule = &#039;zh-cn:汇编语言; zh-tw:組合語言; zh-hk:匯編語言;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;assembly mnemonic&#039;, rule = &#039;zh-cn:助记符; zh-tw:助憶碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;assignment operator&#039;, rule = &#039;zh-cn:赋值运算符; zh-tw:設定運算子;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;average bitarte&#039;, rule = &#039;zh-cn:平均码率; zh-tw:平均位元速率;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;AOL&#039;, rule = &#039;zh-cn:美国在线; zh-tw:美國線上;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;audio&#039;, rule = &#039;zh-cn:音频; zh-tw:音訊; zh-hk:音訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;audio profiles&#039;, rule = &#039;zh-cn:情景模式; zh-tw:音訊設定檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;audit&#039;, rule = &#039;zh-cn:审核; zh-tw:稽核;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== B ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;backward compatible&#039;, rule = &#039;zh-tw:向下相容; zh-cn:向下兼容;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;backward compatible&#039;, rule = &#039;zh-tw:回溯相容; zh-cn:向后兼容;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;band width&#039;, rule = &#039;zh-tw:頻寬; zh-cn:带宽;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;baseband&#039;, rule = &#039;zh-tw:基頻; zh-cn:基带;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;base class&#039;, rule = &#039;zh-tw:基礎類別; zh-cn:基类;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;base name&#039;, rule = &#039;zh-tw:主檔名; zh-cn:文件主名;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;batch&#039;, rule = &#039;zh-cn:批量; zh-tw:批次;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;batch&#039;, rule = &#039;zh-cn:批处理; zh-tw:批次處理;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;batch file&#039;, rule = &#039;zh-tw:批次檔; zh-cn:批处理文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;batch programs&#039;, rule = &#039;zh-tw:批次程式; zh-cn:批处理程序;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;big data&#039;, rule = &#039;zh-cn:大数据; zh-tw:大數據;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Bill Gates&#039;, rule = &#039;zh-cn:盖茨; zh-tw:蓋茲; zh-hk:蓋茨;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;binary function&#039;, rule = &#039;zh-tw:二元函式; zh-cn:双参函数;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;binary tree&#039;, rule = &#039;zh-tw:二元樹; zh-cn:二叉树; zh-hk:二叉樹;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;binding&#039;, rule = &#039;zh-tw:繫結; zh-cn:绑定;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;BitComet&#039;, rule = &#039;zh-tw:比特彗星; zh-cn:比特彗星;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Bit field&#039;, rule = &#039;zh-cn:位段; zh-tw:位元欄;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Bitmap&#039;, rule = &#039;zh-cn:位图; zh-tw:點陣圖;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bitrate&#039;, rule = &#039;zh-tw:位元率; zh-hk:位元速率; zh-cn:比特率;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;BitSpirit&#039;, rule = &#039;zh-tw:比特精靈; zh-cn:比特精灵;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit&#039;, rule = &#039;zh-tw:位元; zh-cn:比特; zh-sg:位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 4-bit&#039;, rule = &#039;zh-cn:4位; zh-tw:4位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 8-bit&#039;, rule = &#039;zh-cn:8位; zh-tw:8位元;&#039; },&lt;br /&gt;
-- 有可能過度轉換，編輯時須注意&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 12-bit&#039;, rule = &#039;zh-cn:12位; zh-tw:12位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 16-bit&#039;, rule = &#039;zh-cn:16位; zh-tw:16位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 18-bit&#039;, rule = &#039;zh-cn:18位; zh-tw:18位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 24-bit&#039;, rule = &#039;zh-cn:24位; zh-tw:24位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 31-bit&#039;, rule = &#039;zh-cn:31位; zh-tw:31位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 32-bit&#039;, rule = &#039;zh-cn:32位; zh-tw:32位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 36-bit&#039;, rule = &#039;zh-cn:36位; zh-tw:36位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 48-bit&#039;, rule = &#039;zh-cn:48位; zh-tw:48位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 60-bit&#039;, rule = &#039;zh-cn:60位; zh-tw:60位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 64-bit&#039;, rule = &#039;zh-cn:64位; zh-tw:64位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 80-bit&#039;, rule = &#039;zh-cn:80位; zh-tw:80位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bit - 128-bit&#039;, rule = &#039;zh-cn:128位; zh-tw:128位元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Bitcoin&#039;, rule = &#039;zh-tw:位元幣; zh-cn:比特币;zh-hk:比特幣;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Bitcoin - Bitcent&#039;, rule = &#039;zh-tw:位元分; zh-cn:比特分;zh-hk:比特分;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Bitcoin - Milli-Bitcoin&#039;, rule = &#039;zh-tw:毫位元; zh-cn:毫比特;zh-hk:毫比特;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Bitcoin - Micro-Bitcoins&#039;, rule = &#039;zh-tw:微位元; zh-cn:微比特;zh-hk:微比特;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Blade Server&#039;, rule = &#039;zh-tw:刀鋒伺服器; zh-cn:刀片服务器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;blank screen&#039;, rule = &#039;zh-tw:黑螢幕; zh-hk:黑畫面; zh-cn:黑屏;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;block&#039;, rule = &#039;zh-tw:遮蔽; zh-cn:屏蔽;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Block (Unicode)&#039;, rule = &#039;zh-cn:区块; zh-tw:區段; zh-hk:區段; zh-mo:區段; zh-sg:区块;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;block cipher&#039;, rule = &#039;zh-cn:分组密码; zh-tw:區塊加密法;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;blog&#039;, rule = &#039;zh-tw:部落格; zh-cn:博客; zh-hk:網誌;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Blue Screen of Death&#039;, rule = &#039;zh-tw:藍白當機; zh-cn:蓝屏死机; zh-hk:BSoD;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Bluetooth&#039;, rule = &#039;zh-tw:藍牙; zh-cn:蓝牙; zh-hk:藍牙; zh-mo:藍牙;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;boot&#039;, rule = &#039;zh-cn:引导; zh-tw:啟動; zh-hk:啟動; zh-mo:啟動;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;boot disk&#039;, rule = &#039;zh-tw:啟動碟; zh-cn:启动盘;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;boot loader&#039;, rule = &#039;zh-cn:启动引导程序; zh-tw:啟動載入程式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Boyce-Codd normal form&#039;, rule = &#039;zh-tw:BC正規化; zh-cn:BC范式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Broadband&#039;, rule = &#039;zh-cn:宽带; zh-tw:寬頻;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Bubble sort&#039;, rule = &#039;zh-tw:氣泡排序; zh-cn:冒泡排序;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;buffer overflow&#039;, rule = &#039;zh-tw:緩衝區溢位; zh-cn:缓存溢出;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;buffer&#039;, rule = &#039;zh-tw:緩衝區; zh-cn:缓冲器; zh-hk:緩衝區;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;build-in&#039;, rule = &#039;zh-tw:內建; zh-cn:内置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Built-in&#039;, rule = &#039;zh-cn:自带; zh-tw:內建; zh-hk:內建; zh-mo:內建;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;burn&#039;, rule = &#039;zh-tw:燒錄; zh-cn:刻录;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Business Model&#039;, rule = &#039;zh-tw:營運模式; zh-cn:商业模型;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Bus&#039;, rule = &#039;zh-tw:匯流排; zh-hk:總線; zh-cn:总线;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;byte&#039;, rule = &#039;zh-cn:字节; zh-tw:位元組;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== C ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;cache&#039;, rule = &#039;高速缓存=&amp;gt;zh-tw:快取;高速缓存=&amp;gt;zh-hk:快取;高速缓存=&amp;gt;zh-mo:快取;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;cache&#039;, rule = &#039;zh-cn:缓存; zh-tw:快取;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;cache memory&#039;, rule = &#039;快取記憶體=&amp;gt;zh-cn:高速缓存; 快取記憶體=&amp;gt;zh-sg:高速缓存;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;cache memory&#039;, rule = &#039;缓存器=&amp;gt;zh-tw:快取記憶體;缓存器=&amp;gt;zh-hk:快取記憶體;缓存器=&amp;gt;zh-mo:快取記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;cached webpage&#039;, rule = &#039;zh-cn:网页快照;zh-tw:頁庫存檔&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;calculator&#039;, rule = &#039;计算器=&amp;gt;zh-tw:計算機; 计算器=&amp;gt;zh-mo:計數機; 計算機=&amp;gt;zh-mo:計數機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;calendar&#039;, rule = &#039;行事曆=&amp;gt;zh-cn:日历; 行事曆=&amp;gt;zh-sg:日历;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;call&#039;, rule = &#039;zh-cn:调用; zh-hk:呼叫; zh-tw:呼叫;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;call&#039;, rule = &#039;撥號=&amp;gt;zh-cn:调用; 撥號=&amp;gt;zh-sg:调用;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Call Level Interface(CLI)&#039;, rule = &#039;zh-cn:调用层接口; zh-tw:呼叫層級介面;&#039; },&lt;br /&gt;
-- 回撥似乎用在電話比較多，計算機上回呼比較多。&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;callback&#039;, rule = &#039;zh-cn:回调; zh-tw:回呼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;callback function&#039;, rule = &#039;zh-cn:回调函数; zh-tw:回呼函式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;camcorder&#039;, rule = &#039;zh-cn:摄像机; zh-tw:攝錄影機; zh-hk:攝像放像機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;camera phone&#039;, rule = &#039;zh-hans:照相手机;zh-hant:照相手機;zh-tw:照相手機;zh-hk:相機手機;zh-mo:相機手機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Campus Area Network&#039;, rule = &#039;zh-cn:校园网; zh-tw:校園網路; zh-hk:校園網絡;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;card reader&#039;, rule = &#039;zh-cn:读卡器; zh-tw:讀卡機; zh-hk:讀卡器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Cell&#039;, rule = &#039;zh-cn:单元格; zh-tw:儲存格; zh-hk:儲存格;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Cellular data&#039;, rule = &#039;zh-tw:蜂巢式資料; zh-cn:蜂窝数据; zh-hk:蜂巢式數據;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Cellular network&#039;, rule = &#039;zh-tw:蜂巢式網路; zh-cn:蜂窝网络; zh-hk:蜂巢式網絡;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;certificate&#039;, rule = &#039;zh-cn:证书; zh-tw:憑證; zh-hk:證書;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;CD driver&#039;, rule = &#039;zh-cn:光盘驱动器; zh-tw:光碟機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;component&#039;, rule = &#039;zh-cn:组件; zh-tw:元件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;chain&#039;, rule = &#039;串鏈=&amp;gt;zh-cn:链; 串鏈=&amp;gt;zh-sg:链;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;channel&#039;, rule = &#039;渠道=&amp;gt;zh-tw:管道;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;character&#039;, rule = &#039;zh-cn:字符; zh-tw:字元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;check button&#039;, rule = &#039;zh-cn:复选按钮; zh-tw:核取按鈕;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;checkbox&#039;, rule = &#039;zh-cn:复选框; zh-tw:核取方塊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Chief Executive Officer(CEO)&#039;, rule = &#039;zh-cn:首席执行官; zh-tw:執行長; zh-hk:行政總裁;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Chief Information Officer(CIO)&#039;, rule = &#039;zh-cn:首席信息官; zh-tw:資訊長; zh-hk:資訊總監;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Chief Operating Officer(COO)&#039;, rule = &#039;zh-cn:首席运营官; zh-tw:營運長; zh-hk:營運總監;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Chief Technology Officer(CTO)&#039;, rule = &#039;zh-cn:首席技术官; zh-tw:技術長;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;child class&#039;, rule = &#039;zh-cn:子类; zh-tw:子類別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class (c++)&#039;, rule = &#039;zh-cn:C++类; zh-tw:C++類別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class (c++)&#039;, rule = &#039;zh-cn:C++的类; zh-tw:C++的類別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class constructor&#039;, rule = &#039;zh-cn:类的构造函数; zh-tw:類別建立者;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class constructor&#039;, rule = &#039;zh-cn:类的构造函数; zh-tw:類別建構者;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class destructor&#039;, rule = &#039;zh-cn:类的析构函数; zh-tw:類別破壞者;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class constructor&#039;, rule = &#039;zh-cn:类的构造函数; zh-tw:類別建構子;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class destructor&#039;, rule = &#039;zh-cn:类的析构函数; zh-tw:類別解構子;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class instance&#039;, rule = &#039;zh-cn:类的实例; zh-tw:類別的實體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class instance&#039;, rule = &#039;zh-cn:类实例; zh-tw:類別實體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class instance&#039;, rule = &#039;zh-cn:类的实例; zh-tw:類別的例項;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class instance&#039;, rule = &#039;zh-cn:类实例; zh-tw:類別例項;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class (java)&#039;, rule = &#039;zh-cn:Java类; zh-tw:Java類別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class (java)&#039;, rule = &#039;zh-cn:Java的类; zh-tw:Java的類別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;classloader&#039;, rule = &#039;zh-cn:类加载器; zh-tw:類別載入器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class member&#039;, rule = &#039;zh-cn:类成员; zh-tw:類別成員;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class method&#039;, rule = &#039;zh-cn:类方法; zh-tw:類別方法;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class variable&#039;, rule = &#039;zh-cn:类变量; zh-tw:類別變量;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class variable&#039;, rule = &#039;zh-cn:类变量; zh-tw:類別變數;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Class-based Programing&#039;, rule = &#039;zh-cn:基于类的编程; zh-tw:類別基礎編程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Class-based Programing&#039;, rule = &#039;zh-cn:基于类; zh-tw:類別基礎;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class declaration&#039;, rule = &#039;zh-cn:类声明; zh-tw:類別宣告;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class definition&#039;, rule = &#039;zh-cn:类定义; zh-tw:類別定義;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class library&#039;, rule = &#039;zh-cn:类库; zh-tw:類別庫;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Class-orientation&#039;, rule = &#039;zh-cn:面向类; zh-tw:類別導向;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;class template&#039;, rule = &#039;zh-cn:类模板; zh-tw:類別範本;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;click&#039;, rule = &#039;點選=&amp;gt;zh-cn:点击; 點選=&amp;gt;zh-hk:點擊; 點選=&amp;gt;zh-sg:点击; 點選=&amp;gt;zh-mo:點擊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;client&#039;, rule = &#039;zh-cn:客户端; zh-tw:用戶端;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;clipboard&#039;, rule = &#039;zh-cn:剪贴板; zh-tw:剪貼簿;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;clock rate&#039;, rule = &#039;zh-cn:时钟频率; zh-tw:時脈;&#039; },&lt;br /&gt;
-- 避免过度转换&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;clock rate&#039;, rule = &#039;時脈頻率=&amp;gt;zh-cn:时钟频率; 時脈頻率=&amp;gt;zh-sg:时钟频率;&#039; },&lt;br /&gt;
-- 国立编译馆的翻译&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;clock rate&#039;, rule = &#039;時鐘率=&amp;gt;zh-cn:时钟频率; 時鐘率=&amp;gt;zh-sg:时钟频率;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;cloud&#039;, rule = &#039;雲端=&amp;gt;zh-cn:云; 雲端=&amp;gt;zh-sg:云;&#039; },&lt;br /&gt;
-- 容易過度轉換&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;cloud computing&#039;, rule = &#039;zh-cn:云计算; zh-tw:雲端運算;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;cloud computing storage&#039;, rule = &#039;zh-cn:云存储; zh-tw:雲端儲存;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Cluster&#039;, rule = &#039;叢集=&amp;gt;zh-cn:簇;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;code&#039;, rule = &#039;程式碼=&amp;gt;zh-cn:代码; 程式碼=&amp;gt;zh-sg:代码;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;code file&#039;, rule = &#039;程式檔=&amp;gt;zh-cn:代码文件; 程式檔=&amp;gt;zh-sg:代码文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;code page&#039;, rule = &#039;zh-cn:代码页; zh-tw:內碼表;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;collaboration&#039;, rule = &#039;共同作業=&amp;gt;zh-cn:协作; 共同作業=&amp;gt;zh-sg:协作;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;combobox&#039;, rule = &#039;zh-cn:组合框; zh-tw:下拉式方塊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;command line&#039;, rule = &#039;zh-cn:命令行; zh-tw:命令列;&#039; },&lt;br /&gt;
-- 有可能過度轉換，編輯時須注意&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;communication&#039;, rule = &#039;zh-cn:通信; zh-tw:通訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Communicating sequential processes&#039;, rule = &#039;zh-cn:通信顺序进程; zh-tw:交談循序程式;&#039; },&lt;br /&gt;
-- 有可能過度轉換，編輯時須注意&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;community&#039;, rule = &#039;社区=&amp;gt;zh-tw:社群; 社区=&amp;gt;zh-hk:社群; 社区=&amp;gt;zh-mo:社群; 社區=&amp;gt;zh-tw:社群;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;community&#039;, rule = &#039;社區=&amp;gt;zh-hk:社群; 社區=&amp;gt;zh-mo:社群; 社群=&amp;gt;zh-cn:社区; 社群=&amp;gt;zh-sg:社区;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;compact disc&#039;, rule = &#039;zh-cn:光盘; zh-tw:光碟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;compact disc&#039;, rule = &#039;光碟片=&amp;gt;zh-cn:光盘; 光碟片=&amp;gt;zh-sg:光盘;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;compatible&#039;, rule = &#039;zh-cn:兼容; zh-tw:相容;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;computer&#039;, rule = &#039;计算机=&amp;gt;zh-tw:電腦; 计算机=&amp;gt;zh-hk:電腦; 计算机=&amp;gt;zh-mo:電腦; 计算机=&amp;gt;zh-sg:电脑;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;computer monitor&#039;, rule = &#039;zh-cn:显示屏; zh-tw:螢幕;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;computer science&#039;, rule = &#039;zh-cn:计算机科学; zh-tw:電腦科學; zh-sg:电脑科学;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;computer security&#039;, rule = &#039;zh-cn:计算机安全; zh-tw:電腦保安; zh-sg:电脑安全;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;computer programming&#039;, rule = &#039;zh-cn:程序设计; zh-tw:程式設計;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;concurrency&#039;, rule = &#039;zh-cn:并发; zh-tw:並行;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;concurrent computing&#039;, rule = &#039;zh-cn:并发计算; zh-tw:並行計算;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;concurrency-oriented&#039;, rule = &#039;zh-cn:面向并发; zh-tw:平行導向;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;configure/configuration&#039;, rule = &#039;組態=&amp;gt;zh-cn:配置; 組態=&amp;gt;zh-sg:配置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;configuration files&#039;, rule = &#039;zh-cn:配置文件; zh-tw:組態檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;connection&#039;, rule = &#039;zh-cn:连接; zh-tw:連線;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;constant bitrate&#039;, rule = &#039;zh-cn:固定码率; zh-tw:固定位元速率;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;constructor&#039;, rule = &#039;zh-cn:构造函数; zh-tw:建構函式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;constructor&#039;, rule = &#039;建構子=&amp;gt;zh-cn:构造函数; 建構子=&amp;gt;zh-sg:构造函数;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;contact&#039;, rule = &#039;聯絡=&amp;gt;zh-cn:联系; 聯絡=&amp;gt;zh-sg:联系;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;contact&#039;, rule = &#039;連絡=&amp;gt;zh-cn:联系; 連絡=&amp;gt;zh-sg:联系;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;contact&#039;, rule = &#039;連絡=&amp;gt;zh-tw:聯絡; 連絡=&amp;gt;zh-hk:聯絡; 連絡=&amp;gt;zh-mo:聯絡;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;contact&#039;, rule = &#039;zh-cn:联系人; zh-tw:聯絡人;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;content-addressable memory&#039;, rule = &#039;zh-cn:内容可寻址存储器; zh-tw:可定址內容記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;control&#039;, rule = &#039;zh-cn:控件; zh-tw:控制項;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;convert&#039;, rule = &#039;轉檔=&amp;gt;zh-cn:转换; 轉檔=&amp;gt;zh-sg:转换;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;core dump&#039;, rule = &#039;核心轉儲=&amp;gt;zh-cn:核心转储文件; 核心轉儲=&amp;gt;zh-tw:核心傾印檔案; 核心轉儲=&amp;gt;zh-hk:核心傾印檔案;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;cost-effective&#039;, rule = &#039;zh-cn:性价比; zh-tw:價效比; zh-hk:性價比&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;crash&#039;, rule = &#039;zh-cn:死机; zh-tw:當機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;create&#039;, rule = &#039;zh-cn:创建; zh-tw:建立;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;create&#039;, rule = &#039;建立。=&amp;gt;zh-cn:建立。;&#039; }, -- 避免过度转换&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;CRT&#039;, rule = &#039;zh-cn:显像管; zh-tw:映像管; zh-hk:顯像管&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;cryptanalysis&#039;, rule = &#039;zh-cn:密码分析; zh-tw:破密學;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;current version&#039;, rule = &#039;zh-cn:当前版本; zh-tw:目前版本; zh-hk:目前版本&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;custom&#039;, rule = &#039;zh-cn:自定义; zh-tw:自訂;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;customization&#039;, rule = &#039;zh-cn:定制; zh-tw:客製;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;cut&#039;, rule = &#039;zh-cn:剪切; zh-tw:剪下;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== D ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;daemon&#039;, rule = &#039;zh-cn:守护进程; zh-tw:守護行程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data&#039;, rule = &#039;zh-cn:数据; zh-hk:數據; zh-tw:資料;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data communication&#039;, rule = &#039;zh-cn:数据通信; zh-hk:數據通訊; zh-tw:資料通訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data compression&#039;, rule = &#039;zh-cn:数据压缩; zh-tw:資料壓縮;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data dredging&#039;, rule = &#039;zh-cn:数据捕捞; zh-tw:資料挖泥;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data execution protection&#039;, rule = &#039;zh-cn:数据执行保护; zh-tw:系統記憶體保護;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data member&#039;, rule = &#039;zh-cn:数据成员; zh-tw:成員變數;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data mining&#039;, rule = &#039;zh-cn:数据挖掘; zh-tw:資料探勘;&#039; },&lt;br /&gt;
--為防止“数据包”過度轉換，已在下方加防轉換處理&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data packet&#039;, rule = &#039;zh-cn:数据包; zh-hk:數據封包; zh-tw:資料封包;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data warehouse&#039;, rule = &#039;zh-cn:数据仓库; zh-tw:資料倉儲; zh-hk:資料倉儲;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data mining&#039;, rule = &#039;zh-cn:数据挖掘; zh-tw:資料探勘;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data source&#039;, rule = &#039;zh-cn:数据源; zh-tw:資料來源;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;data warehouse&#039;, rule = &#039;zh-cn:数据仓库; zh-tw:資料倉儲;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;database&#039;, rule = &#039;zh-cn:数据库; zh-tw:資料庫; zh-hk:數據庫&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;database normalization&#039;, rule = &#039;zh-cn:数据库规范化; zh-tw:資料庫正規化; zh-hk:數據庫規範化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;datagram&#039;, rule = &#039;zh-cn:数据报文; zh-tw:資料包;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;DDoS&#039;, rule = &#039;zh-cn:分布式拒绝服务攻击; zh-tw:分散式阻斷服務攻擊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;deadlock&#039;, rule = &#039;zh-cn:死锁; zh-tw:死結;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;debug&#039;, rule = &#039;zh-cn:调试; zh-tw:偵錯;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;debugger&#039;, rule = &#039;zh-cn:调试器; zh-tw:偵錯程式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;declaration&#039;, rule = &#039;声明语句=&amp;gt;zh-tw:宣告; 声明语句=&amp;gt;zh-hk:宣告; 声明语句=&amp;gt;zh-mo:宣告;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;decode&#039;, rule = &#039;译码=&amp;gt;zh-tw:解碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;default&#039;, rule = &#039;zh-cn:默认; zh-tw:預設;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;default&#039;, rule = &#039;缺省=&amp;gt;zh-tw:預設; 缺省=&amp;gt;zh-hk:預設; 缺省=&amp;gt;zh-mo:預設;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;defragmentation program&#039;, rule = &#039;zh-cn:磁盘碎片整理程序; zh-tw:磁碟重組工具;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Denormalization&#039;, rule = &#039;zh-cn:反规范化; zh-tw:反正規化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;dependent type&#039;, rule = &#039;zh-cn:依赖类型; zh-tw:依值型別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;dependent type&#039;, rule = &#039;zh-cn:依存类型; zh-tw:依存型別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;derivation list&#039;, rule = &#039;zh-cn:继承列表; zh-tw:衍化列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;derive&#039;, rule = &#039;zh-cn:派生; zh-tw:衍生;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;derived class&#039;, rule = &#039;zh-cn:派生类; zh-tw:衍生類別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;desktop computer&#039;, rule = &#039;zh-cn:台式机; zh-tw:桌上型電腦; zh-hk:桌上電腦;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;desktop computer&#039;, rule = &#039;桌上電腦=&amp;gt;zh-cn:台式机;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;desktop computer&#039;, rule = &#039;zh-cn:桌面型; zh-tw:桌上型;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;destruct&#039;, rule = &#039;zh-cn:析构; zh-tw:解構; zh-sg:析构&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;destructor&#039;, rule = &#039;zh-cn:析构函数; zh-tw:解構函式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;destructor&#039;, rule = &#039;解構子=&amp;gt;zh-cn:析构函数; 解構子=&amp;gt;zh-sg:析构函数&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;device&#039;, rule = &#039;設備=&amp;gt;zh-tw:裝置; 設備=&amp;gt;zh-hk:裝置; 設備=&amp;gt;zh-mo:裝置; 设备=&amp;gt;zh-tw:裝置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;device&#039;, rule = &#039; 设备=&amp;gt;zh-hk:裝置; 设备=&amp;gt;zh-mo:裝置; 裝置=&amp;gt;zh-cn:设备; 裝置=&amp;gt;zh-sg:设备;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;dialog box&#039;, rule = &#039;zh-cn:对话框; zh-tw:對話方塊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;digital&#039;, rule = &#039;数码=&amp;gt;zh-tw:數位; 數碼=&amp;gt;zh-cn:数字; 數碼=&amp;gt;zh-sg:数字; 數位=&amp;gt;zh-cn:数字; 數位=&amp;gt;zh-sg:数字; 數位=&amp;gt;zh-hk:數碼; 數位=&amp;gt;zh-mo:數碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Digital&#039;, rule = &#039;zh-cn:数字化; zh-hk:數碼化; zh-tw:數位化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Digital&#039;, rule = &#039;数码化=&amp;gt;zh-tw:數位化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Digital Camera&#039;, rule = &#039;數碼相機=&amp;gt;zh-cn:数码相机; 數碼相機=&amp;gt;zh-sg:数码相机;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Digital certificates&#039;, rule = &#039;zh-cn:数字证书; zh-hk:數碼證書; zh-tw:數位憑證;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;digital mobile&#039;, rule = &#039;zh-cn:数字移动; zh-tw:數位行動; zh-hk:數碼流動;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;digital photo&#039;, rule = &#039;zh-cn:数字照片; zh-tw:數位相片; zh-hk:數碼相片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;digital signature&#039;, rule = &#039;zh-cn:数字签名; zh-tw:數位簽章; zh-hk:數碼簽章;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;digital video&#039;, rule = &#039;zh-cn:数字视频; zh-tw:數位影片; zh-hk:數碼影片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;digital watermarking&#039;, rule = &#039; zh-cn:数字水印; zh-tw:數位浮水印; zh-hk:數碼水印;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;distributed&#039;, rule = &#039;zh-cn:分布式; zh-tw:分散式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;distribution&#039;, rule = &#039;zh-cn:发行; zh-tw:發行;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Diskette Drive&#039;, rule = &#039;zh-cn:软盘驱动器; zh-tw:軟碟機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;document&#039;, rule = &#039;文档=&amp;gt;zh-tw:文件; 文档=&amp;gt;zh-hk:文件; 文档=&amp;gt;zh-mo:文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;document&#039;, rule = &#039;文檔=&amp;gt;zh-tw:文件; 文檔=&amp;gt;zh-hk:文件; 文檔=&amp;gt;zh-mo:文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;document file&#039;, rule = &#039;zh-cn:文档文件;zh-tw:文件檔案;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;document file&#039;, rule = &#039;文件檔=&amp;gt;zh-cn:文档文件;文件檔=&amp;gt;zh-sg:文档文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Document Object Model，DOM&#039;, rule = &#039;zh-cn:文档对象模型;zh-tw:文件物件模型;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Do Not Track&#039;, rule = &#039;zh-cn:请勿追踪;zh-tw:停止追蹤;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;dot operator&#039;, rule = &#039;zh-cn:点运算符;zh-tw:點運算子;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;domain/key normal form&#039;, rule = &#039;zh-cn:DK范式; zh-tw:DK正規化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;domain name&#039;, rule = &#039;zh-cn:域名;zh-tw:網域名稱; zh-hk:域名;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;domain name&#039;, rule = &#039;网域名称=&amp;gt;zh-tw:網域名稱;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;domain name&#039;, rule = &#039;網域名稱=&amp;gt;zh-tw:網域名稱;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;domain name&#039;, rule = &#039;網域=&amp;gt;zh-cn:域; 網域=&amp;gt;zh-sg:域;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive&#039;, rule = &#039;zh-cn:磁盘驱动器; zh-tw:磁碟機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - A drive&#039;, rule = &#039;zh-cn:A盘; zh-tw:A槽; zh-hk:A磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - B drive&#039;, rule = &#039;zh-cn:B盘; zh-tw:B槽; zh-hk:B磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - C drive&#039;, rule = &#039;zh-cn:C盘; zh-tw:C槽; zh-hk:C磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - D drive&#039;, rule = &#039;zh-cn:D盘; zh-tw:D槽; zh-hk:D磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - E drive&#039;, rule = &#039;zh-cn:E盘; zh-tw:E槽; zh-hk:E磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - F drive&#039;, rule = &#039;zh-cn:F盘; zh-tw:F槽; zh-hk:F磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - G drive&#039;, rule = &#039;zh-cn:G盘; zh-tw:G槽; zh-hk:G磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - H drive&#039;, rule = &#039;zh-cn:H盘; zh-tw:H槽; zh-hk:H磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - I drive&#039;, rule = &#039;zh-cn:I盘; zh-tw:I槽; zh-hk:I磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - J drive&#039;, rule = &#039;zh-cn:J盘; zh-tw:J槽; zh-hk:J磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - K drive&#039;, rule = &#039;zh-cn:K盘; zh-tw:K槽; zh-hk:K磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - L drive&#039;, rule = &#039;zh-cn:L盘; zh-tw:L槽; zh-hk:L磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - M drive&#039;, rule = &#039;zh-cn:M盘; zh-tw:M槽; zh-hk:M磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - N drive&#039;, rule = &#039;zh-cn:N盘; zh-tw:N槽; zh-hk:N磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - O drive&#039;, rule = &#039;zh-cn:O盘; zh-tw:O槽; zh-hk:O磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - P drive&#039;, rule = &#039;zh-cn:P盘; zh-tw:P槽; zh-hk:P磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - Q drive&#039;, rule = &#039;zh-cn:Q盘; zh-tw:Q槽; zh-hk:Q磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - R drive&#039;, rule = &#039;zh-cn:R盘; zh-tw:R槽; zh-hk:R磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - S drive&#039;, rule = &#039;zh-cn:S盘; zh-tw:S槽; zh-hk:S磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - T drive&#039;, rule = &#039;zh-cn:T盘; zh-tw:T槽; zh-hk:T磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - U drive&#039;, rule = &#039;U磁碟機=&amp;gt;zh-cn:U盘; U磁碟機=&amp;gt;zh-tw:U槽&#039; },&lt;br /&gt;
-- U盘與USB flash drive有衝突&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - U drive&#039;, rule = &#039;U槽=&amp;gt;zh-cn:U盘;U槽=&amp;gt;zh-hk:U磁碟機;U槽=&amp;gt;zh-mo:U磁碟機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - V drive&#039;, rule = &#039;zh-cn:V盘; zh-tw:V槽; zh-hk:V磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - W drive&#039;, rule = &#039;zh-cn:W盘; zh-tw:W槽; zh-hk:W磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - X drive&#039;, rule = &#039;zh-cn:X盘; zh-tw:X槽; zh-hk:X磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - Y drive&#039;, rule = &#039;zh-cn:Y盘; zh-tw:Y槽; zh-hk:Y磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - Z drive&#039;, rule = &#039;zh-cn:Z盘; zh-tw:Z槽; zh-hk:Z磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive - system drive&#039;, rule = &#039;zh-cn:系统盘; zh-tw:系統槽; zh-hk:系統磁碟機&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drive letter&#039;, rule = &#039;zh-cn:盘符; zh-tw:碟符;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;driver&#039;, rule = &#039;zh-cn:驱动程序; zh-tw:驅動程式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;drop-down menu&#039;, rule = &#039;zh-cn:下拉菜单; zh-tw:下拉式選單;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Dual-link&#039;, rule = &#039;zh-cn:双通道; zh-tw:雙鍊結;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;duck typing&#039;, rule = &#039;zh-cn:鸭子类型; zh-tw:鴨子型別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;dynamic binding&#039;, rule = &#039;zh-cn:动态绑定; zh-tw:動態繫結;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;dynamic typing&#039;, rule = &#039;zh-cn:动态类型; zh-tw:動態型別;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== E ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;edit bar&#039;, rule = &#039;zh-cn:编辑栏; zh-tw:編輯列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;email&#039;, rule = &#039;zh-cn:邮箱; zh-tw:信箱; zh-hk:郵箱;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;email address&#039;, rule = &#039;zh-cn:邮箱地址; zh-tw:信箱地址; zh-hk:郵箱地址;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;end user&#039;, rule = &#039;zh-cn:最终用户; zh-tw:終端使用者;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;end-user license agreements&#039;, rule = &#039;zh-cn:最终用户许可协议; zh-tw:最終用戶授權協定;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;engineering - computer engineering&#039;, rule = &#039;zh-cn:计算机工程; zh-tw:電腦工程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;engineering - electrical engineering&#039;, rule = &#039;zh-cn:电力工程; zh-tw:電力工程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;engineering - electronic engineering&#039;, rule = &#039;zh-cn:电子工程; zh-tw:電子工程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;engineering - reverse engineering&#039;, rule = &#039;zh-cn:电机工程; zh-tw:電機工程;&#039; },&lt;br /&gt;
-- 防止「工程」過度轉換成「專案」&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;engineering - reverse engineering&#039;, rule = &#039;zh-cn:逆向工程; zh-tw:逆向工程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;engineering&#039;, rule = &#039;zh-cn:工程学; zh-tw:工程學;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;engineer&#039;, rule = &#039;zh-cn:工程师; zh-tw:工程師;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Enter&#039;, rule = &#039;回车=&amp;gt;zh-tw:Enter;回车=&amp;gt;zh-hk:Enter;回车=&amp;gt;zh-mo:Enter;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;enumeration&#039;, rule = &#039;zh-cn:枚举; zh-tw:列舉;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;enumerators&#039;, rule = &#039;zh-cn:枚举器; zh-tw:列舉元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;enumerators&#039;, rule = &#039;zh-cn:枚举成员; zh-tw:列舉元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Ericsson&#039;, rule = &#039;zh-cn:爱立信; zh-tw:愛立信; zh-hk:愛立信;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;ethernet&#039;, rule = &#039;zh-cn:以太网; zh-tw:乙太網路;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Ethernet&#039;, rule = &#039;zh-tw:乙太網; zh-cn:以太网;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;exception handling&#039;, rule = &#039;zh-cn:异常处理; zh-tw:例外處理;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;executable file&#039;, rule = &#039;zh-cn:可执行文件; zh-tw:可執行檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;executable file&#039;, rule = &#039;zh-cn:可执行文件; zh-tw:執行檔;&#039; },&lt;br /&gt;
-- { type = &#039;item&#039;, original = &#039;exit&#039;, rule = &#039;zh-cn:退出; zh-tw:結束;&#039; },-- 極易過度轉換，例如：「Google退出中國」、「退出市場」等&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;export&#039;, rule = &#039;zh-cn:导出; zh-tw:匯出;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;expression&#039;, rule = &#039;zh-cn:表达式; zh-tw:運算式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;extensible business reporting language&#039;, rule = &#039;zh-cn:可扩展商业报告语言; zh-tw:可延伸商用報告語言;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;extensible firmware interface&#039;, rule = &#039;zh-cn:可扩展固件接口; zh-tw:可延伸韌體介面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;extensible markup language&#039;, rule = &#039;zh-cn:可扩展置标语言; zh-tw:可延伸標示語言;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;extensible&#039;, rule = &#039;zh-cn:可扩展; zh-tw:可延伸;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;extension name&#039;, rule = &#039;zh-cn:扩展名; zh-tw:副檔名;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;extension&#039;, rule = &#039;擴充套件=&amp;gt;zh-cn:扩展;擴充套件=&amp;gt;zh-sg:扩展;擴充套件=&amp;gt;zh-hk:擴充功能;擴充套件=&amp;gt;zh-mo:擴充功能;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;extension&#039;, rule = &#039;zh-cn:扩展; zh-tw:擴充功能; zh-hk:擴充功能;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;external link&#039;, rule = &#039;外链=&amp;gt;zh-tw:外連;外链=&amp;gt;zh-hk:外連;外链=&amp;gt;zh-mo:外連;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== F ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;fairchild semiconductor&#039;, rule = &#039;zh-cn:飞兆半导体; zh-tw:快捷半導體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;feature phone&#039;, rule = &#039;zh-hans:功能手机;zh-hant:功能型手機;zh-hk:功能電話;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;fiber distributed data interface&#039;, rule = &#039;zh-cn:光纤分布式数据接口; zh-tw:光纖分散式數據介面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;field&#039;, rule = &#039;zh-cn:字段; zh-tw:欄位;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;fifth normal form&#039;, rule = &#039;zh-cn:第五范式; zh-tw:第五正規化;&#039; },&lt;br /&gt;
-- 含有“檔”的詞語均在「其他」一節以防過度轉換&lt;br /&gt;
--{ type = &#039;item&#039;, original = &#039;file&#039;, rule = &#039;zh-cn:文件; zh-tw:檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;file&#039;, rule = &#039;zh-cn:文件; zh-tw:檔案;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;filename extension&#039;, rule = &#039;zh-cn:文件扩展名; zh-tw:副檔名;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;filename extension&#039;, rule = &#039;zh-cn:扩展名; zh-tw:副檔名;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;find&#039;, rule = &#039;zh-cn:查找; zh-tw:尋找;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;firmware&#039;, rule = &#039;zh-cn:固件; zh-tw:韌體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;first normal form&#039;, rule = &#039;zh-cn:第一范式; zh-tw:第一正規化;&#039; },&lt;br /&gt;
-- 「闪存」導致過度轉換「快闪存储」&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;flash&#039;, rule = &#039;zh-cn:快闪; zh-tw:快閃;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;flash drive&#039;, rule = &#039;zh-cn:优盘; zh-tw:快閃隨身碟; zh-hk:USB記憶體;zh:闪存盘;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;flash drive&#039;, rule = &#039;zh-cn:U盘; zh-tw:快閃隨身碟; zh-hk:USB記憶體;zh:闪存盘;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;flash memory&#039;, rule = &#039;zh-cn:闪存; zh-tw:快閃記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;flight mode&#039;, rule = &#039;zh-cn:飞行模式; zh-tw:飛航模式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;floppy disk&#039;, rule = &#039;zh-cn:软盘; zh-tw:軟碟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;floppy disk&#039;, rule = &#039;软盘=&amp;gt;zh-hk:磁碟;軟碟=&amp;gt;zh-hk:磁碟;软盘=&amp;gt;zh-mo:磁碟;軟碟=&amp;gt;zh-mo:磁碟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;folder&#039;, rule = &#039;zh-cn:文件夹; zh-tw:資料夾;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;font&#039;, rule = &#039;zh-cn:字体; zh-tw:字型;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;footnotes&#039;, rule = &#039;zh-cn:脚注; zh-tw:註腳;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;footnotes&#039;, rule = &#039;zh-cn:尾注; zh-tw:章節附註&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;foreign key&#039;, rule = &#039;zh-cn:外键; zh-tw:外來鍵;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;form&#039;, rule = &#039;zh-cn:窗体; zh-tw:表單;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;forward error correction&#039;, rule = &#039;zh-cn:前向纠错; zh-tw:前向錯誤更正;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;fourth normal form&#039;, rule = &#039;zh-cn:第四范式; zh-tw:第四正規化&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;frame&#039;, rule = &#039;zh-tw:影格;zh-cn:帧;zh-hk:幀;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;frame pointer&#039;, rule = &#039;zh-cn:帧指针;zh-tw:框指標;zh-hk:框指標;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;frame synchronization&#039;, rule = &#039;zh-tw:訊框同步;zh-cn:帧同步;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;full screen&#039;, rule = &#039;全屏幕=&amp;gt;zh-tw:全螢幕; 全屏幕=&amp;gt;zh-hk:全螢幕; 全屏幕=&amp;gt;zh-mo:全螢幕;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;full screen&#039;, rule = &#039;zh-cn:全屏; zh-tw:全螢幕;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;fullwidth&#039;, rule = &#039;zh-cn:全角; zh-tw:全形;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;function&#039;, rule = &#039;zh-cn:函数; zh-tw:函式; zh-hk:函數;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;functional&#039;, rule = &#039;zh-cn:函数式; zh-tw:函數式; zh-hk:函數式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;function library&#039;, rule = &#039;zh-cn:函数库; zh-tw:函式庫; zh-hk:函數庫;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;functional programming&#039;, rule = &#039;zh-cn:函数式编程; zh-tw:函數語言程式設計;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;functional programming language&#039;, rule = &#039;函數程式語言=&amp;gt;zh-cn:函数编程语言; 函數程式語言=&amp;gt;zh-sg:函数编程语言;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;functional programming language&#039;, rule = &#039;zh-cn:函数编程语言; zh-tw:函數程式語言;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== G ==&lt;br /&gt;
]] },&lt;br /&gt;
-- 参考文献：刘青，温昌斌，海峡两岸科技名词差异问题分析与试解，中国科技术语，(3),2008, 65-69&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;garbage&#039;, rule = &#039;zh-cn:无用信息; zh-tw:廢料;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;gateway&#039;, rule = &#039;zh-cn:网关; zh-tw:閘道器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Gateway, Inc.&#039;, rule = &#039;zh-cn:捷威; zh-tw:桀威;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;get&#039;, rule = &#039;zh-cn:获取; zh-tw:取得;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;gigabit ethernet&#039;, rule = &#039;zh-cn:吉比特以太网; zh-tw:千兆乙太網;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Global System for Mobile Communications Association&#039;, rule = &#039;zh-cn:全球移动通信系统协会; zh-tw:全球行動通訊系統協會; zh-hk:全球流動通訊系統協會;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Google&#039;, rule = &#039;谷歌=&amp;gt;zh-sg:Google; 谷歌=&amp;gt;zh-hk:Google; 谷歌=&amp;gt;zh-mo:Google; 谷歌=&amp;gt;zh-tw:Google;&#039; },&lt;br /&gt;
-- {{CItemHidden|original=Google Chrome|zh-cn:Chrome浏览器; zh-tw:Google Chrome; zh-hk:Google瀏覽器}}&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Google Cloud Messaging&#039;, rule = &#039;zh-hans:Google云消息传递; zh-hant:Google雲端通訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Google Cloud Messaging&#039;, rule = &#039;zh-hans:Google云消息传递; zh-hant:Google 雲端通訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Google Cloud Messaging&#039;, rule = &#039;Google云端推送=&amp;gt;zh-hans:Google云消息传递; Google云端推送=&amp;gt;zh-cn:Google云消息传递; Google云端推送=&amp;gt;zh-sg:Google云消息传递; Google云端推送=&amp;gt;zh-hant:Google雲端通訊; Google云端推送=&amp;gt;zh-tw:Google 雲端通訊; Google云端推送=&amp;gt;zh-hk:Google 雲端通訊; Google云端推送=&amp;gt;zh-mo:Google 雲端通訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Google Chrome Frame&#039;, rule = &#039;zh-cn:谷歌浏览器內嵌框架; zh-hant:Google內嵌瀏覽框; zh-tw:Google Chrome內嵌瀏覽框;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Google Docs&#039;, rule = &#039;zh-cn:Google文档; zh-tw:Google文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Google Docs&#039;, rule = &#039;zh-cn:Google 文档; zh-tw:Google 文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Google Toolbar&#039;, rule = &#039;zh-cn:Google工具条; zh-tw:Google工具列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Google Toolbar&#039;, rule = &#039;zh-cn:Google 工具条; zh-tw:Google 工具列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Google Video&#039;, rule = &#039;zh-cn:Google视频; zh-tw:Google影片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Google Video&#039;, rule = &#039;zh-cn:Google 视频; zh-tw:Google 影片; zh-hk:Google 影片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;graphing calculator&#039;, rule = &#039;zh-cn:图形计算器; zh-tw:繪圖計算機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;gridlines&#039;, rule = &#039;zh-cn:网格线; zh-tw:格線;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;group&#039;, rule = &#039;zh-cn:组群; zh-tw:群組;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;GSM mobile&#039;, rule = &#039;zh-cn:GSM移动; zh-tw:GSM行動; zh-hk:GSM流動;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;GUI&#039;, rule = &#039;圖形化使用者介面=&amp;gt;zh-cn:图形用户界面; 圖形化使用者介面=&amp;gt;zh-sg:图形用户界面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;GUI&#039;, rule = &#039;图形用户界面=&amp;gt;zh-tw:圖形化使用者介面; 图形用户界面=&amp;gt;zh-hk:圖形化使用者介面; 图形用户界面=&amp;gt;zh-mo:圖形化使用者介面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;GUID Partition Table&#039;, rule = &#039;zh-cn:全局唯一标识分区表; zh-tw:GUID磁碟分割表;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== H ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;hacker&#039;, rule = &#039;zh-cn:黑客; zh-tw:駭客; zh-hk:黑客;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;halfwidth&#039;, rule = &#039;zh-cn:半角; zh-tw:半形;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;handler&#039;, rule = &#039;zh-cn:处理函数; zh-tw:處理常式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;handle&#039;, rule = &#039;zh-cn:句柄; zh-tw:控制代碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;hard disk&#039;, rule = &#039;zh-cn:硬盘; zh-hk:硬碟; zh-tw:硬碟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;hard-coded&#039;, rule = &#039;zh-cn:硬编码; zh-tw:寫死;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;hardware&#039;, rule = &#039;zh-cn:硬件; zh-tw:硬體; zh-hk:硬件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;hash&#039;, rule = &#039;哈希=&amp;gt;zh-tw:雜湊;哈希=&amp;gt;zh-hk:雜湊;哈希=&amp;gt;zh-mo:雜湊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;hash&#039;, rule = &#039;zh-cn:散列; zh-tw:雜湊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;HDD&#039;, rule = &#039;zh-cn:硬盘驱动器; zh-tw:硬碟機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;HDMI&#039;, rule = &#039;zh-cn:高清多媒体界面; zh-tw:高畫質多媒體介面; zh-hk:高清多媒體介面&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Header&#039;, rule = &#039;zh-cn:标头; zh-tw:檔頭;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Header and Footer&#039;, rule = &#039;zh-cn:页眉; zh-tw:頁首;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Header and Footer&#039;, rule = &#039;zh-cn:页脚; zh-tw:頁尾;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;header file&#039;, rule = &#039;標頭檔案=&amp;gt;zh-cn:头文件; 標頭檔案=&amp;gt;zh-sg:头文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;header file&#039;, rule = &#039;標頭檔=&amp;gt;zh-cn:头文件; 標頭檔=&amp;gt;zh-sg:头文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;hearts&#039;, rule = &#039;zh-cn:红心大战; zh-tw:傷心小棧;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;header file&#039;, rule = &#039;表頭檔案=&amp;gt;zh-cn:头文件; 表頭檔案=&amp;gt;zh-sg:头文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;header file&#039;, rule = &#039;zh-cn:头文件; zh-tw:表頭檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Help and Support&#039;, rule = &#039;zh-cn:帮助与支持; zh-tw:説明與支援;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;help document&#039;, rule = &#039;zh-cn:帮助文档; zh-tw:説明文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Hierarchical View&#039;, rule = &#039;zh-cn:分层视图; zh-tw:多層次樹狀介面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Hierarchical View&#039;, rule = &#039;zh-cn:分层树形视图; zh-tw:多層次樹狀介面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;hierarchy&#039;, rule = &#039;zh-cn:层次结构; zh-tw:階層;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;high definition/HD&#039;, rule = &#039;zh-cn:高清; zh-tw:高畫質; zh-hk:高清;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;high level&#039;, rule = &#039;zh-cn:高级; zh-tw:高階;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;home&#039;, rule = &#039;住家=&amp;gt;zh-cn:家庭; 住家=&amp;gt;zh-sg:家庭;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;home address&#039;, rule = &#039;住家地址=&amp;gt;zh-cn:家庭地址; 住家地址=&amp;gt;zh-sg:家庭地址;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;home page&#039;, rule = &#039;主页=&amp;gt;zh-tw:首頁;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;home page&#039;, rule = &#039;主頁=&amp;gt;zh-tw:首頁;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;hosted/hosting&#039;, rule = &#039;zh-tw:代管; zh-cn:托管;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;hook&#039;, rule = &#039;zh-cn:钩子; zh-tw:勾點;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;HyperText Markup Language&#039;, rule = &#039;zh-cn:超文本标记语言; zh-tw:超文件標示語言;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;HyperText Markup Language&#039;, rule = &#039;zh-cn:超文本置标语言; zh-tw:超文件標示語言;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;hyperthreading&#039;, rule = &#039;zh-cn:超线程; zh-tw:超執行緒;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== I ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;icon&#039;, rule = &#039;zh-cn:图标; zh-tw:圖示; zh-hk:圖示;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Integrated Development Environment (IDE)&#039;, rule = &#039;zh-cn:集成开发环境; zh-tw:整合式開發環境;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Integrated Device Electronics (IDE)&#039;, rule = &#039;zh-cn:集成设备电路; zh-tw:整合裝置電路;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;ID&#039;, rule = &#039;zh-cn:身份; zh-hk:身份; zh-tw:身分;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;identifier&#039;, rule = &#039;zh-cn:标识符; zh-tw:識別元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;if and only if&#039;, rule = &#039;zh-cn:当且仅当; zh-tw:若且唯若;&#039; },&lt;br /&gt;
-- 有可能過度轉換，編輯時須注意&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;image&#039;, rule = &#039;映象=&amp;gt;zh-cn:镜像; 映象=&amp;gt;zh-sg:镜像;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;image file&#039;, rule = &#039;zh-cn:图像文件; zh-tw:圖檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;imperative programming&#039;, rule = &#039;zh-cn:命令式编程; zh-tw:指令式編程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;implement&#039;, rule = &#039;zh-cn:实现; zh-tw:實作;&#039; },&lt;br /&gt;
-- 有可能過度轉換，亦可能只是最初轉換至&amp;quot;模块:&amp;quot;時遺留了，編輯時須注意&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;import&#039;, rule = &#039;zh-cn:导入; zh-tw:匯入;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Incognito mode&#039;, rule = &#039;zh:隱身模式; zh-cn:隐身模式; zh-hant:無痕模式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;indent&#039;, rule = &#039;zh-cn:缩进; zh-tw:縮排;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;info (information)&#039;, rule = &#039;zh-cn:信息; zh-tw:資訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;information age&#039;, rule = &#039;zh-cn:信息时代; zh-tw:資訊時代; zh-hk:資訊年代;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Information and Communication Technology&#039;, rule = &#039;zh-cn:信息及通信技术; zh-tw:資訊及通訊科技;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Information Engagement&#039;, rule = &#039;zh-cn:信息接触; zh-tw:資訊參與;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Information industry&#039;, rule = &#039;zh-cn:信息产业; zh-tw:資訊工業;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Information Management&#039;, rule = &#039;zh-cn:信息管理; zh-tw:資訊管理;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Information Science&#039;, rule = &#039;zh-cn:信息学; zh-tw:資訊學; zh-hk:資訊科學;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;information security&#039;, rule = &#039;zh-cn:信息安全; zh-tw:資訊保安;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Information Technology&#039;, rule = &#039;zh-cn:信息技术; zh-tw:資訊科技;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;inline&#039;, rule = &#039;zh-cn:内联; zh-tw:行內;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;installation package&#039;, rule = &#039;zh-cn:安装包; zh-tw:安裝套件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;installer&#039;, rule = &#039;zh-cn:安装程序; zh-tw:安裝程式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;instance&#039;, rule = &#039;zh-cn:实例; zh-tw:例項;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;instance method&#039;, rule = &#039;zh-cn:实例方法; zh-tw:實體方法;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;instance method&#039;, rule = &#039;zh-cn:实例方法; zh-tw:例項方法;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;integrate&#039;, rule = &#039;zh-cn:集成; zh-tw:整合;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;integrated circuit&#039;, rule = &#039;zh-cn:集成电路; zh-tw:積體電路; zh-hk:集成電路;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;intellectual property&#039;, rule = &#039;zh-cn:知识产权; zh-tw:智慧財產權; zh-hk:知識產權;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;intelligence&#039;, rule = &#039;智能型=&amp;gt;zh-tw:智慧型; 智能型=&amp;gt;zh-sg:智慧型;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;interacts&#039;, rule = &#039;zh-cn:交互; zh-tw:互動;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;interface (frontstage)&#039;, rule = &#039;界面=&amp;gt;zh-tw:介面;界面=&amp;gt;zh-hk:介面;界面=&amp;gt;zh-mo:介面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;interface&#039;, rule = &#039;zh-cn:接口; zh-tw:介面; zh-hk:介面; zh-mo:介面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Internet&#039;, rule = &#039;英特网=&amp;gt;zh-tw:網際網路;英特网=&amp;gt;zh-hk:互聯網;英特网=&amp;gt;zh-mo:互聯網;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Internet&#039;, rule = &#039;因特网=&amp;gt;zh-tw:網際網路;因特网=&amp;gt;zh-hk:互聯網;因特网=&amp;gt;zh-mo:互聯網;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Internet&#039;, rule = &#039;互联网=&amp;gt;zh-tw:網際網路;互联网=&amp;gt;zh-hk:互聯網;互联网=&amp;gt;zh-mo:互聯網;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Internet&#039;, rule = &#039;国际互联网=&amp;gt;zh-tw:網際網路;国际互联网=&amp;gt;zh-hk:互聯網;国际互联网=&amp;gt;zh-mo:互聯網;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Internet bar&#039;, rule = &#039;zh-cn:网吧; zh-tw:網咖; zh-hk:網吧;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Internet Content Provider (ICP)&#039;, rule = &#039;zh-cn:互联网内容提供商; zh-tw:線上內容提供者; zh-hk:互聯網內容供應商;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Internet Service Provider (ISP)&#039;, rule = &#039;zh-cn:互联网服务提供商; zh-tw:網際網路服務提供者; zh-hk:互聯網服務供應商;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;interpreter&#039;, rule = &#039;zh-cn:解释器; zh-tw:直譯器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Intranet&#039;, rule = &#039;zh-cn:内部网; zh-tw:企業網路; zh-hk:內聯網;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Internet Key Exchange&#039;, rule = &#039;zh-cn:因特网密钥交换; zh-hk:互聯網金鑰交換; zh-tw:網際網路金鑰交換;&#039; },&lt;br /&gt;
-- 與call的轉換有衝突&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;invoke&#039;, rule = &#039;叫用=&amp;gt;zh-cn:调用; 叫用=&amp;gt;zh-sg:调用;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== J ==&lt;br /&gt;
{{CItemHidden|original=Jelly Bean|zh-cn:果冻豆; zh-tw:雷根糖; zh-hk:啫喱豆;}}&amp;lt;!-- 常用于指代Android 4.1，故加入IT转换组--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;key&#039;, rule = &#039;zh-cn:密钥; zh-tw:金鑰;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;keygen&#039;, rule = &#039;zh-cn:注册机; zh-tw:序號產生器;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== L ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;landscape&#039;, rule = &#039;zh-cn:横屏幕; zh-tw:橫螢幕;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;landscape&#039;, rule = &#039;zh-cn:横屏; zh-tw:橫螢幕;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Language-Oriented Programming&#039;, rule = &#039;zh-cn:面向语言的程序设计; zh-tw:語言導向編程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;language package&#039;, rule = &#039;zh-cn:语言包; zh-tw:語言套件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;laser&#039;, rule = &#039;zh-cn:激光; zh-hk:鐳射; zh-tw:雷射; zh-sg:镭射;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;linked list&#039;, rule = &#039;zh-cn:链表; zh-tw:連結串列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;linker&#039;, rule = &#039;zh-cn:连接器; zh-tw:連結器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;links&#039;, rule = &#039;zh-cn:链接; zh-tw:連結;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;load&#039;, rule = &#039;zh-cn:加载; zh-tw:載入;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Local Area Network&#039;, rule = &#039;zh-cn:局域网; zh-tw:區域網路; zh-hk:區域網絡;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;localization&#039;, rule = &#039;zh-cn:本地化; zh-tw:在地化; zh-hk:本地化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;log in&#039;, rule = &#039;zh-cn:登录; zh-tw:登入&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;log out&#039;, rule = &#039;zh-cn:注销; zh-tw:登出&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;logic device&#039;, rule = &#039;zh-cn:逻辑器件; zh-tw:邏輯裝置&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;logic gate&#039;, rule = &#039;zh-cn:逻辑门; zh-hk:邏輯門; zh-tw:邏輯閘;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;loop&#039;, rule = &#039;zh-cn:循环; zh-tw:迴圈;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;lossless&#039;, rule = &#039;zh-cn:无损; zh-tw:無失真;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;lossless compression&#039;, rule = &#039;zh-cn:无损压缩; zh-tw:無失真壓縮; zh-hk:無損壓縮;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;lossy&#039;, rule = &#039;zh-cn:有损; zh-tw:失真;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;lossy compression&#039;, rule = &#039;zh-cn:有损压缩; zh-tw:失真壓縮;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;lost&#039;, rule = &#039;zh-cn:丢失; zh-tw:遺失;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;low definition&#039;, rule = &#039;zh-cn:低清; zh-tw:低畫質; zh-hk:低清;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;low level&#039;, rule = &#039;zh-cn:低级; zh-tw:低階;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Laptop&#039;, rule = &#039;zh-hk:筆記電腦; 膝上型電腦;=&amp;gt;zh-cn:笔记本电脑; 膝上型電腦;=&amp;gt;zh-sg:笔记本电脑;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;library&#039;, rule = &#039;函式庫=&amp;gt;zh-cn:库;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== M ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;machine code&#039;, rule = &#039;zh-cn:机器代码;zh-tw:機器碼;zh-hk:機械碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;machine code&#039;, rule = &#039;zh-cn:机器码;zh-tw:機器碼;zh-hk:機械碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;managed code&#039;, rule = &#039;zh-cn:托管代码;zh-hant:受控代碼;&#039; },&lt;br /&gt;
-- 單向轉換以避免過度轉換&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;macro&#039;, rule = &#039;巨集=&amp;gt;zh-cn:宏; 巨集=&amp;gt;zh-sg:宏;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;macro virus&#039;, rule = &#039;zh-cn:宏病毒; zh-tw:巨集病毒;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;macroblock&#039;, rule = &#039;zh-cn:宏块;zh-tw:大區塊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;main memory&#039;, rule = &#039;zh-cn:主存储器; zh-tw:主記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;main memory&#039;, rule = &#039;zh-cn:主存; zh-tw:主記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;memory&#039;, rule = &#039;zh-cn:内部存储器; zh-tw:記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;memory&#039;, rule = &#039;zh-cn:存储器; zh-tw:記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;memory&#039;, rule = &#039;zh-cn:内存; zh-tw:記憶體; zh-hk:記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mainframe&#039;, rule = &#039;zh-cn:大型机; zh-tw:大型電腦;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mapping&#039;, rule = &#039;zh-cn:映射; zh-tw:對映;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;marketing&#039;, rule = &#039;zh-cn:营销; zh-tw:行銷;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Markup Language&#039;, rule = &#039;zh-cn:置标语言; zh-tw:標示語言;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Markup Language&#039;, rule = &#039;zh-cn:标记语言; zh-tw:標示語言;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Markup Language&#039;, rule = &#039;zh-cn:标记语言; zh-tw:標記式語言;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mask&#039;, rule = &#039;掩码=&amp;gt;zh-tw:遮罩; 掩码=&amp;gt;zh-hk:遮罩; 掩码=&amp;gt;zh-mo:遮罩;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Master Boot Record&#039;, rule = &#039;zh-cn:主引导记录; zh-tw:主開機紀錄;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mtach&#039;, rule = &#039;zh-cn:匹配; zh-tw:符合;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;media streamming&#039;, rule = &#039;zh-cn:流媒体; zh-tw:串流媒體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;memory card&#039;, rule = &#039;zh-cn:存储卡; zh-tw:記憶卡;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;memory leak&#039;, rule = &#039;zh-cn:内存泄漏; zh-tw:記憶體漏失;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;memory leak&#039;, rule = &#039;zh-cn:存储渗漏; zh-tw:記憶體流失;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;menu&#039;, rule = &#039;zh-cn:菜单; zh-tw:選單;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;message&#039;, rule = &#039;zh-cn:消息; zh-tw:訊息;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;message authentication code&#039;, rule = &#039;zh-cn:消息认证码; zh-tw:訊息鑑別碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;message box&#039;, rule = &#039;zh-cn:消息框; zh-tw:訊息方塊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;meta-programming&#039;, rule = &#039;zh-cn:元编程; zh-tw:超編程;&#039; },&lt;br /&gt;
-- 根據 Google 用後設資料的比中介資料多出很多&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;metadata&#039;, rule = &#039;zh-cn:元数据; zh-tw:後設資料;&#039; },&lt;br /&gt;
-- 參考文獻：劉青，溫昌斌，海峽兩岸科技名詞差異問題分析與試解，中國科技術語，(3),2008, 65-69&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Metal Oxide Semiconductor&#039;, rule = &#039;zh-cn:金属氧化物半导体; zh-tw:金氧半導體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Metropolitan Area Network&#039;, rule = &#039;zh-cn:城域网; zh-tw:都會網路;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Micro-blog(ging)&#039;, rule = &#039;zh-cn:微博客; zh-tw:微網誌; zh-hk:微博客;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Micro-blog(ging)&#039;, rule = &#039;zh-cn:微型博客; zh-tw:微型網誌; zh-hk:微型博客;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Micro-blog(ging)&#039;, rule = &#039;微網誌=&amp;gt;zh-cn:微博; 微網誌=&amp;gt;zh-sg:微博;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;microcontroller&#039;, rule = &#039;zh-cn:单片机; zh-tw:單晶片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;middleware&#039;, rule = &#039;zh-cn:中间件; zh-tw:中介軟體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;MIDP&#039;, rule = &#039;zh-cn:移动信息设备配置文件; zh-tw:行動資訊裝置設定檔;zh-hk:流動資訊器材定義檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;minesweeper&#039;, rule = &#039;zh-cn:扫雷; zh-tw:踩地雷;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile agent&#039;, rule = &#039;zh-cn:移动代理; zh-tw:行動代理; zh-hk:流動代理;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile app&#039;, rule = &#039;zh-cn:移动应用; zh-tw:行動應用; zh-hk:流動應用;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile browser&#039;, rule = &#039;zh-cn:移动浏览器; zh-tw:行動瀏覽器; zh-hk:流動瀏覽器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile client&#039;, rule = &#039;zh-cn:移动客户端; zh-tw:行動用戶端; zh-hk:流動用戶端;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile code&#039;, rule = &#039;zh-cn:移动代码; zh-tw:行動程式碼; zh-hk:流動程式碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile computer&#039;, rule = &#039;zh-cn:移动计算机; zh-tw:行動電腦; zh-hk:流動電腦;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile communication&#039;, rule = &#039;zh-cn:移动通信; zh-tw:行動通訊; zh-hk:流動通訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile data&#039;, rule = &#039;zh-cn:移动数据; zh-tw:行動資料; zh-hk:流動數據;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile device&#039;, rule = &#039;zh-cn:移动设备; zh-tw:行動裝置; zh-hk:流動裝置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile device&#039;, rule = &#039;移动装置=&amp;gt;zh-tw:行動裝置; 移动装置=&amp;gt;zh-hk:流動裝置; 移动装置=&amp;gt;zh-mo:流動裝置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile device&#039;, rule = &#039;行動設備=&amp;gt;zh-tw:行動裝置; 流動設備=&amp;gt;zh-tw:行動裝置; 移動裝置=&amp;gt;zh-tw:行動裝置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile device&#039;, rule = &#039;移動設備=&amp;gt;zh-tw:行動裝置; 移動裝置=&amp;gt;zh-hk:流動裝置; 移動設備=&amp;gt;zh-hk:流動裝置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile device&#039;, rule = &#039;行動設備=&amp;gt;zh-hk:流動裝置; 流動設備=&amp;gt;zh-hk:流動裝置; 移動裝置=&amp;gt;zh-mo:流動裝置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile device/portable device&#039;, rule = &#039;移動設備=&amp;gt;zh-mo:流動裝置; 行動設備=&amp;gt;zh-hk:流動裝置; 流動設備=&amp;gt;zh-hk:流動裝置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile Internet&#039;, rule = &#039;zh-cn:移动互联网; zh-tw:行動網際網路; zh-hk:流動互聯網;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile network&#039;, rule = &#039;zh-cn:移动网络; zh-tw:行動網路; zh-hk:流動網絡;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile network operator&#039;, rule = &#039;zh-cn:移动网络运营商; zh-tw:行動網路業者; zh-hk:流動網絡營辦商;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile operating system&#039;, rule = &#039;zh-cn:移动操作系统; zh-tw:行動作業系統; zh-hk:流動作業系統;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile operator&#039;, rule = &#039;zh-cn:移动运营商; zh-tw:行動業者; zh-hk:流動營辦商;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile pay&#039;, rule = &#039;zh-cn:移动支付; zh-tw:行動支付; zh-hk:流動支付;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile phone&#039;, rule = &#039;zh-cn:移动电话; zh-tw:行動電話; zh-hk:流動電話;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile platform&#039;, rule = &#039;zh-cn:移动平台; zh-tw:行動平台; zh-hk:流動平台;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile product&#039;, rule = &#039;zh-cn:移动产品; zh-tw:行動產品; zh-hk:流動產品;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Mobile software&#039;, rule = &#039;zh-cn:移动软件; zh-tw:行動軟體; zh-hk:流動軟件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile telecom&#039;, rule = &#039;zh-cn:移动电信; zh-tw:行動電信; zh-hk:流動電訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Mobile telecom operator&#039;, rule = &#039;zh-cn:移动电信运营商; zh-tw:行動電信業者; zh-hk:流動電訊營辦商;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile television&#039;, rule = &#039;zh-cn:移动电视; zh-tw:行動電視; zh-hk:流動電視;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile terminal&#039;, rule = &#039;zh-cn:移动终端; zh-tw:行動終端; zh-hk:流動終端;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile terminal&#039;, rule = &#039;zh-cn:移动端; zh-tw:行動端; zh-hk:流動端;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobile version&#039;, rule = &#039;zh-cn:移动版; zh-tw:行動版; zh-hk:流動版;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mobility&#039;, rule = &#039;zh-cn:移动性; zh-tw:行動性; zh-hk:流動性;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;modem&#039;, rule = &#039;zh-cn:调制解调器; zh-tw:數據機; zh-hk:數據機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;modem&#039;, rule = &#039;調變解調器=&amp;gt;zh-cn:调制解调器; 調變解調器=&amp;gt;zh-sg:调制解调器&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;modifier&#039;, rule = &#039;zh-cn:修饰符; zh-tw:修飾詞;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;module&#039;, rule = &#039;zh-cn:模块; zh-tw:模組;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;monolithic kernel&#039;, rule = &#039;zh-cn:宏内核; zh-hk:整塊性核心; zh-tw:單核心;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;most derived class&#039;, rule = &#039;zh-cn:最底层派生类; zh-tw:最末層衍生類別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;motherboard&#039;, rule = &#039;zh-cn:主板; zh-tw:主機板;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mouse&#039;, rule = &#039;zh-cn:鼠标; zh-tw:滑鼠&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;mousepad&#039;, rule = &#039;zh-cn:鼠标垫; zh-tw:滑鼠墊&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;multi-tasking&#039;, rule = &#039;zh-cn:多任务; zh-tw:多工;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;multiagent system&#039;, rule = &#039;zh-cn:多主体系统; zh-tw:多代理系統;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;multihoming&#039;, rule = &#039;zh-cn:多主; zh-tw:內送流量備援容錯機制;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Multimedia Messaging Service&#039;, rule = &#039;zh-cn:彩信; zh-hk:多媒體短訊; zh-tw:多媒體簡訊; zh-sg:多媒体简讯;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;multithreading&#039;, rule = &#039;zh-cn:多线程; zh-tw:多執行緒;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;multithreading&#039;, rule = &#039;多緒=&amp;gt;zh-cn:多线程; 多緒=&amp;gt;zh-sg:多线程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;My Document&#039;, rule = &#039;zh-cn:我的文档; zh-tw:我的文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Mobile World Congress&#039;, rule = &#039;zh-cn:世界移动通信大会; zh-tw:世界行動通訊大會 ;zh-hk:世界流動通訊大會;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== N ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;namespace&#039;, rule = &#039;zh-cn:名字空间; zh-tw:命名空間;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;native&#039;, rule = &#039;固有=&amp;gt;zh-hk:原生;固有=&amp;gt;zh-tw:原生;固有=&amp;gt;zh-mo:原生;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;native&#039;, rule = &#039;zh-cn:本地的; zh-tw:原生的;&#039; },&lt;br /&gt;
-- {{CItemHidden|original=native|zh-cn:本地; zh-tw:原生;}}&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;navigation bar&#039;, rule = &#039;zh-cn:导航条; zh-tw:導覽列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;neste(d)&#039;, rule = &#039;zh-cn:嵌套; zh-tw:巢狀;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Net disk&#039;, rule = &#039;zh-cn:网盘;zh-tw:網碟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Netbook&#039;, rule = &#039;zh-cn:上网本;zh-tw:小筆電;zh-hk:NetBook;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Netizen&#039;, rule = &#039;网民=&amp;gt;zh-tw:網友; 網友=&amp;gt;zh-hk:網民; 網友=&amp;gt;zh-mo:網民; 網民=&amp;gt;zh-tw:網友; 网友=&amp;gt;zh-hk:網民; 网友=&amp;gt;zh-hk:網民; 网友=&amp;gt;zh-mo:網民;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Netscape Navigator&#039;, rule = &#039;zh-cn:网景导航者; zh-tw:網景領航員;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Network&#039;, rule = &#039;zh-cn:网络;zh-tw:網路;zh-hk:網絡&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;network card&#039;, rule = &#039;網路卡=&amp;gt;zh-cn:网卡; 網路卡=&amp;gt;zh-sg:网卡;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;network database&#039;, rule = &#039;zh-cn:网状数据库; zh-tw:網狀式資料庫; zh-hk:網絡數據庫&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Network Neighbourhood&#039;, rule = &#039;zh-cn:网上邻居; zh-tw:網路上的芳鄰;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Network operator&#039;, rule = &#039;zh-cn:网络运营商; zh-tw:網路業者; zh-hk:網絡營辦商;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;notebook computer&#039;, rule = &#039;zh-cn:笔记本电脑; zh-tw:筆記型電腦; zh-hk:手提電腦&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;NVIDIA&#039;, rule = &#039;zh-cn:英伟达; zh-tw:輝達; zh-hk:輝達;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Norton Ghost&#039;, rule = &#039;zh-cn:诺顿克隆精灵;zh-tw:諾頓魅影系統;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== O ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;object&#039;, rule = &#039;zh-cn:对象; zh-tw:物件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;object code&#039;, rule = &#039;zh-cn:目标代码; zh-tw:目的碼; zh-hk:目標碼&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;object file&#039;, rule = &#039;目的檔案=&amp;gt;zh-cn:目标文件;目的檔案=&amp;gt;zh-sg:目标文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;object file&#039;, rule = &#039;zh-cn:目标文件; zh-tw:目的檔; zh-hk:目標文件&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Object-oriented&#039;, rule = &#039;zh-cn:面向对象; zh-tw:物件導向;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;object&#039;, rule = &#039;zh-cn:对象; zh-tw:物件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Office Shortcut Bar&#039;, rule = &#039;zh-cn:快捷工具栏; zh-tw:快捷列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Office Suite&#039;, rule = &#039;zh-cn:办公室套件; zh-tw:辦公室套件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;offline&#039;, rule = &#039;zh-cn:脱机; zh-tw:離線;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;online&#039;, rule = &#039;联机=&amp;gt;zh-tw:線上; 联机=&amp;gt;zh-hk:線上; 联机=&amp;gt;zh-mo:線上;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;online&#039;, rule = &#039;zh-cn:在线; zh-tw:線上;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;online hard drive&#039;, rule = &#039;zh-cn:网络硬盘; zh-tw:網路硬碟; zh-hk:網絡硬碟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;online video&#039;, rule = &#039;zh-cn:在线视频; zh-tw:線上影片;zh-hk:線上影片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;On-Line Transaction Processing&#039;, rule = &#039;zh-cn:联机交易处理; zh-tw:線上交易處理;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;On-Line Analytical Processing&#039;, rule = &#039;zh-cn:联机分析处理; zh-tw:線上分析處理;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;open&#039;, rule = &#039;zh-cn:打开; zh-tw:開啟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;open source&#039;, rule = &#039;zh-cn:开放源码; zh-tw:開放原始碼; zh-hk:開放源碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;open source&#039;, rule = &#039;zh-cn:开放源代码; zh-tw:開放原始碼; zh-hk:開放源碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Open Handset Alliance&#039;, rule = &#039;zh-cn:开放手持设备联盟; zh-tw:開放手機聯盟&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Open Mobile Alliance&#039;, rule = &#039;zh-cn:开放移动联盟; zh-tw:開放行動聯盟; zh-hk:流動通訊開放制式聯盟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;operand&#039;, rule = &#039;zh-cn:操作数; zh-tw:運算元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;operand&#039;, rule = &#039;zh-cn:运算对象; zh-tw:運算元;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;operating system&#039;, rule = &#039;zh-cn:操作系统; zh-tw:作業系統; zh-hk:作業系統;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;operator&#039;, rule = &#039;zh-cn:运算符; zh-tw:運算子;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;optimization/optimize&#039;, rule = &#039;zh-cn:优化; zh-tw:最佳化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;outport&#039;, rule = &#039;zh-cn:导出; zh-tw:匯出;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;overflow&#039;, rule = &#039;上限溢位=&amp;gt;zh-cn:溢出; 上限溢位=&amp;gt;zh-sg:溢出;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;overflow&#039;, rule = &#039;zh-cn:溢出; zh-tw:溢位;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;overload&#039;, rule = &#039;zh-cn:重载; zh-tw:多載;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;overload&#039;, rule = &#039;zh-cn:重载; zh-tw:過載;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;override&#039;, rule = &#039;zh-cn:改写; zh-tw:覆寫;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== P ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;package&#039;, rule = &#039;套件=&amp;gt;zh-cn:包; 套件=&amp;gt;zh-sg:包; 套件=&amp;gt;zh-tw:套件; 套件=&amp;gt;zh-hk:套件; 套件=&amp;gt;zh-mo:套件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;packet&#039;, rule = &#039;zh-cn:数据包; zh-tw:封包;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;packet switch&#039;, rule = &#039;zh-cn:分组交换; zh-tw:封包交換;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;page view/PV&#039;, rule = &#039;zh-cn:访问量; zh-tw:瀏覽量;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;paint&#039;, rule = &#039;小畫家=&amp;gt;zh-cn:画图;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;palette&#039;, rule = &#039;zh-cn:调色板; zh-tw:調色盤;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;paradigm (programming)&#039;, rule = &#039;zh-cn:范型; zh-tw:典範;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;parallel&#039;, rule = &#039;zh-cn:并行; zh-tw:並列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;parallel computing&#039;, rule = &#039;zh-cn:并行计算; zh-tw:平行計算;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;parallel port&#039;, rule = &#039;zh-cn:并行端口; zh-tw:並列埠;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;parallel port&#039;, rule = &#039;并口=&amp;gt;zh-tw:並列埠;并口=&amp;gt;zh-hk:並列埠;并口=&amp;gt;zh-mo:並列埠;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;parallel port&#039;, rule = &#039;并行接口=&amp;gt;zh-tw:並列埠;并行接口=&amp;gt;zh-hk:並列埠;并行接口=&amp;gt;zh-mo:並列埠;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;parameter list&#039;, rule = &#039;zh-cn:参数列表; zh-tw:參數列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;parameter list&#039;, rule = &#039;zh-cn:参数表; zh-tw:參數列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;parenthesis&#039;, rule = &#039;zh-cn:括号; zh-tw:括弧;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;partition&#039;, rule = &#039;分割區=&amp;gt;zh-hans:分区; 分割區=&amp;gt;zh-cn:分区; 分割區=&amp;gt;zh-sg:分区;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;partition&#039;, rule = &#039;zh-cn:分区; zh-tw:分割; zh-hk:分割;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;paste&#039;, rule = &#039;zh-cn:粘贴; zh-tw:貼上;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;patch&#039;, rule = &#039;zh-cn:补丁; zh-tw:修補程式;&#039; },&lt;br /&gt;
-- {{CItemHidden|original=pattern|zh-cn:模式; zh-tw:範式;}} 容易過度轉換&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Peer-to-Peer&#039;, rule = &#039;zh-cn:点对点; zh-tw:對等;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;performance&#039;, rule = &#039;zh-cn:性能; zh-tw:效能;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;permission&#039;, rule = &#039;許可權=&amp;gt;zh-cn:权限; 許可權=&amp;gt;zh-sg:权限;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;persistence&#039;, rule = &#039;zh-cn:持久性; zh-tw:永續性;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Personal Area Network&#039;, rule = &#039;zh-cn:个人网; zh-tw:個人區域網路;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;personal digital assistant&#039;, rule = &#039;zh-cn:个人数码助理; zh-tw:個人數位助理; zh-hk:個人數碼助理;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;photo&#039;, rule = &#039;zh-cn:照片; zh-tw:相片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;photocopy&#039;, rule = &#039;zh-cn:复印; zh-tw:影印;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;physical layer&#039;, rule = &#039;zh-cn:物理层; zh-tw:實體層;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;physical address&#039;, rule = &#039;zh-cn:物理地址; zh-tw:實體位址;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;physical memory&#039;, rule = &#039;zh-cn:物理内存; zh-tw:實體記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;picture viewer&#039;, rule = &#039;zh-cn:图像检视器; zh-tw:圖片檢視器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;picture viewer&#039;, rule = &#039;图像浏览器=&amp;gt;zh-tw:圖片檢視器;图像浏览器=&amp;gt;zh-hk:圖片檢視器;图像浏览器=&amp;gt;zh-mo:圖片檢視器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;pixel&#039;, rule = &#039;畫素=&amp;gt;zh-cn:像素;畫素=&amp;gt;zh-hk:像素;畫素=&amp;gt;zh-mo:像素;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;placeholder&#039;, rule = &#039;zh-cn:占位符;zh-tw:預留位置;zh-hk:預留位置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Plug and Play&#039;, rule = &#039;zh-cn:即插即用; zh-tw:隨插即用;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Pluging&#039;, rule = &#039;zh-tw:外掛程式; zh-cn:插件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Plug-ins&#039;, rule = &#039;zh-tw:外掛模組; zh-cn:插件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;podcast&#039;, rule = &#039;zh-cn:播客; zh-tw:播客; zh-hk:Podcast;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;pointer&#039;, rule = &#039;zh-cn:指针; zh-tw:指標;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;polymorphism&#039;, rule = &#039;zh-cn:多态; zh-tw:多型;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Popups&#039;, rule = &#039;zh-cn:弹出窗口; zh-tw:快顯畫面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;port&#039;, rule = &#039;zh-cn:端口; zh-tw:埠;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;portable&#039;, rule = &#039;zh-cn:便携式; zh-tw:可攜式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;portable computer&#039;, rule = &#039;zh-cn:便携式计算机; zh-tw:攜帶式電腦;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;portable edition&#039;, rule = &#039;zh-cn:便携版; zh-tw:可攜版;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;portable hard drive&#039;, rule = &#039;zh-cn:移动硬盘; zh-tw:行動硬碟; zh-hk:流動硬碟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;portal&#039;, rule = &#039;zh-cn:门户系统; zh-tw:入口系統; zh-hk:入門系統;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;portal&#039;, rule = &#039;zh-cn:门户网站; zh-tw:入口網站; zh-hk:入門網站;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;post&#039;, rule = &#039;zh-cn:帖子; zh-tw:貼文;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;preference&#039;, rule = &#039;预置=&amp;gt;zh-tw:偏好設定; 预置=&amp;gt;zh-hk:參數設定; 预置=&amp;gt;zh-mo:參數設定;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;preference settings&#039;, rule = &#039;zh-cn:首选项; zh-tw:偏好設定; zh-hk:參數設定;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;prefix&#039;, rule = &#039;zh-cn:前缀; zh-tw:字首;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;presentation&#039;, rule = &#039;zh-cn:演示稿; zh-tw:簡報;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;printer preview&#039;, rule = &#039;zh-cn:打印机; zh-tw:印表機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;print preview&#039;, rule = &#039;zh-cn:打印预览; zh-tw:預覽列印;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;procedural programming&#039;, rule = &#039;zh-cn:过程式; zh-tw:程序式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;procedural programming&#039;, rule = &#039;zh-cn:过程化; zh-tw:程序化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;procedural programming&#039;, rule = &#039;zh-cn:面向过程; zh-tw:程序導向;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;process&#039;, rule = &#039;連作=&amp;gt;zh-cn:进程; 連作=&amp;gt;zh-sg:进程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;process&#039;, rule = &#039;處理程序=&amp;gt;zh-cn:进程; 處理程序=&amp;gt;zh-sg:进程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;process&#039;, rule = &#039;zh-cn:进程; zh-tw:行程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Process Control Block&#039;, rule = &#039;zh-cn:进程控制块; zh-tw:行程控制表;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;product key&#039;, rule = &#039;zh-cn:产品密钥; zh-tw:產品金鑰;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;profile&#039;, rule = &#039;zh-cn:配置文件; zh-tw:設定檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;program&#039;, rule = &#039;zh-cn:程序; zh-tw:程式; zh-hk:程式&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;programmer&#039;, rule = &#039;zh-cn:程序编写员; zh-tw:程式設計師;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;programmer&#039;, rule = &#039;zh-cn:程序员; zh-tw:程式設計師;&#039; },&lt;br /&gt;
-- 避免过度转换&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;program -- avoid&#039;, rule = &#039;zh-cn:方程式; zh-tw:方程式&#039; },&lt;br /&gt;
-- 避免过度转换&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;program -- avoid&#039;, rule = &#039;zh-cn:行程序; zh-tw:行程式&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;programmable&#039;, rule = &#039;可規化=&amp;gt;zh-cn:可编程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;programmable&#039;, rule = &#039;zh-cn:可编程; zh-tw:可編程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;programmable logic device&#039;, rule = &#039;zh-cn:可编程逻辑器件; zh-tw:可程式邏輯裝置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;programming language&#039;, rule = &#039;zh-cn:编程语言; zh-tw:程式語言;&#039; },&lt;br /&gt;
-- {{CItemHidden|original=project|zh-cn:工程; zh-tw:專案;}} 容易過度轉換，故隱藏&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;project&#039;, rule = &#039;zh-cn:项目; zh-tw:專案;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;project&#039;, rule = &#039;計畫=&amp;gt;zh-cn:项目; 計畫=&amp;gt;zh-sg:项目; 計畫=&amp;gt;zh-hk:計劃; 計畫=&amp;gt;zh-mo:計劃;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;project page&#039;, rule = &#039;zh-cn:项目页; zh-tw:計畫頁; zh-hant:專案頁;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;protocol&#039;, rule = &#039;zh-cn:协议; zh-tw:協定;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;prototype-based programming&#039;, rule = &#039;zh-cn:基于原型的编程; zh-tw:原型程式設計;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Parallel computing&#039;, rule = &#039;zh-hans:并行计算; zh-hant:平行計算;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Pseudocode&#039;, rule = &#039;zh-cn:伪代码; zh-tw:虛擬碼; zh-hk:偽代碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Public land mobile network&#039;, rule = &#039;zh-cn:公共陆基移动网; zh-tw:公眾行動電話網路; zh-hk:公地流動網路;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;pull-down lists&#039;, rule = &#039;zh-cn:下拉列表; zh-tw:下拉式清單;&#039; },&lt;br /&gt;
-- 維基百科內建功能&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;purge&#039;, rule = &#039;刷新缓存=&amp;gt;zh-tw:清除快取; 刷新缓存=&amp;gt;zh-hk:清除快取; 刷新缓存=&amp;gt;zh-mo:清除快取;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;purge&#039;, rule = &#039;zh-cn:清理缓存; zh-tw:清除快取;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;push&#039;, rule = &#039;zh-cn:推送; zh-tw:推播;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== Q ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;queue&#039;, rule = &#039;zh-cn:队列; zh-tw:佇列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Quick Launch bar&#039;, rule = &#039;zh-cn:快速启动栏;zh-tw:快速啟動列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;quality&#039;, rule = &#039;zh-cn:质量; zh-tw:品質; zh-hk:質素;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Quantum computer&#039;, rule = &#039;zh-cn:量子计算机; zh-tw:量子電腦; zh-hk:量子電腦;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== R ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;radio button&#039;, rule = &#039;zh-cn:单选按钮; zh-tw:圓鈕;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;random-access&#039;, rule = &#039;zh-cn:随机存取; zh-tw:隨機存取;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;random-access memory&#039;, rule = &#039;zh-cn:随机存取存储器; zh-tw:隨機存取記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;random-access memory&#039;, rule = &#039;随机存储器=&amp;gt;zh-tw:隨機存取記憶體;随机存储器=&amp;gt;zh-hk:隨機存取記憶體;随机存储器=&amp;gt;zh-mo:隨機存取記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;random number&#039;, rule = &#039;zh-cn:随机数; zh-tw:亂數&#039;; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;readme&#039;, rule = &#039;zh-cn:自述文件; zh-tw:讀我檔案;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;read-only&#039;, rule = &#039;zh-cn:只读; zh-tw:唯讀;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;read-only memory&#039;, rule = &#039;只读内存=&amp;gt;zh-tw:唯讀記憶體;只读内存=&amp;gt;zh-hk:唯讀記憶體;只读内存=&amp;gt;zh-mo:唯讀記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;real mode&#039;, rule = &#039;zh-cn:真实模式; zh-tw:真實模式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;real mode&#039;, rule = &#039;zh-cn:实模式; zh-tw:真實模式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;reboot&#039;, rule = &#039;zh-cn:重启; zh-tw:重新開機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;recover&#039;, rule = &#039;回復=&amp;gt;zh-cn:恢复; 回復=&amp;gt;zh-sg:恢复;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;recovery disc&#039;, rule = &#039;zh-cn:恢复光盘;zh-tw:還原光碟;zh-hk:還原光碟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;recursion&#039;, rule = &#039;zh-cn:递归; zh-tw:遞迴;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Recycle Bin&#039;, rule = &#039;zh-cn:回收站; zh-tw:資源回收筒;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;redirect&#039;, rule = &#039;zh-cn:重定向; zh-tw:重新導向;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;redo&#039;, rule = &#039;zh-cn:恢复; zh-tw:取消復原;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;reference&#039;, rule = &#039;zh-cn:参考资料; zh-tw:參考資料;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;reference&#039;, rule = &#039;zh-cn:引用; zh-tw:參照;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;refresh&#039;, rule = &#039;zh-cn:刷新; zh-tw:重新整理;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;register&#039;, rule = &#039;zh-cn:寄存器; zh-tw:暫存器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;registry&#039;, rule = &#039;zh-cn:注册表; zh-tw:登錄檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;regular expression&#039;, rule = &#039;正規表示式=&amp;gt;zh-cn:正则表达式; 正規表示式=&amp;gt;zh-sg:正则表达式;&#039; },&lt;br /&gt;
-- *[http://www.term.gov.cn/pages/homepage/result.jsp?term=regular%20expression&amp;amp;search_flag=3 全国科学技术名词审定委员会]：正则表达式&lt;br /&gt;
-- *[http://terms.nict.gov.tw/search1.php?s=regular+expression&amp;amp;type=&amp;amp;s_type=0&amp;amp;Submit2=%A 國立編譯館]：正規表式&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;regular expression&#039;, rule = &#039;zh-cn:正则表达式; zh-tw:正規表示式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;reinstallation&#039;, rule = &#039;zh-cn:重装; zh-tw:重灌;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;relational&#039;, rule = &#039;關聯=&amp;gt;zh-cn:关系;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;relational database&#039;, rule = &#039;zh-cn:关系数据库; zh-tw:關聯式資料庫;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;release&#039;, rule = &#039;釋出=&amp;gt;zh-cn:发布;&#039; },&lt;br /&gt;
-- {{CItemHidden|original=release|zh-cn:发行; zh-tw:釋出;}}&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;remote&#039;, rule = &#039;zh-cn:远程; zh-tw:遠端;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;remote desktop protocol&#039;, rule = &#039;zh-cn:远程桌面协议; zh-tw:遠端桌面協定;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;remote procedure call&#039;, rule = &#039;zh-cn:远程过程调用; zh-tw:遠端程序呼叫;&#039; },&lt;br /&gt;
-- 「可移动磁盘」對應「抽取式磁碟」（來自微軟官網）&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;removable&#039;, rule = &#039;zh-cn:可移动; zh-tw:抽取式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;rename&#039;, rule = &#039;zh-cn:重命名; zh-tw:重新命名;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;render&#039;, rule = &#039;zh-cn:渲染; zh-tw:彩現;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;repeating groups&#039;, rule = &#039;zh-cn:重复组; zh-tw:重複群;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;repeating groups&#039;, rule = &#039;zh-cn:重复群组; zh-tw:重複群组;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;repeating groups&#039;, rule = &#039;zh-cn:重复组群; zh-tw:重複组群;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;replace&#039;, rule = &#039;zh-cn:替换; zh-tw:取代;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;reply&#039;, rule = &#039;zh-cn:回复; zh-tw:回覆;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;reply&#039;, rule = &#039;zh-cn:答复; zh-tw:答覆;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;reset&#039;, rule = &#039;zh-cn:重置; zh-tw:重設;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;response&#039;, rule = &#039;响应=&amp;gt;zh-tw:回應;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;review&#039;, rule = &#039;zh-hans:复核; zh-hant:覆核;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Rich Internet application&#039;, rule = &#039;zh-cn:丰富互联网应用程序; zh-tw:多樣化網際網路應用程式; zh-hk:多樣化互聯網應用程式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;routine&#039;, rule = &#039;zh-cn:例程; zh-tw:常式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;run&#039;, rule = &#039;zh-cn:运行; zh-tw:執行; zh-hk:執行;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;running in the background&#039;, rule = &#039;zh-cn:后台运行; zh-tw:背景執行;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== S ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;sample&#039;, rule = &#039;zh-cn:示例; zh-tw:範例;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;sampling rate&#039;, rule = &#039;zh-cn:采样率; zh-tw:取樣率;zh-hk:取樣率;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;sampling rate&#039;, rule = &#039;zh-cn:采样率; zh-tw:取樣頻率;zh-hk:取樣率;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;SanDisk&#039;, rule = &#039;zh-cn:闪迪; zh-tw:新帝; zh-hk:SanDisk;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;save&#039;, rule = &#039;保存=&amp;gt;zh-tw:儲存; 保存=&amp;gt;zh-hk:儲存; 保存=&amp;gt;zh-mo:儲存;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;scanner&#039;, rule = &#039;zh-cn:扫描仪; zh-tw:掃描器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;scheduler&#039;, rule = &#039;zh-cn:调度器; zh-tw:排程器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;schedule&#039;, rule = &#039;zh-cn:调度; zh-tw:排程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;screen&#039;, rule = &#039;zh-cn:屏幕;zh-tw:螢幕;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;screensaver&#039;, rule = &#039;zh-cn:屏幕保护程序;zh-tw:螢幕保護裝置;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;screenshot&#039;, rule = &#039;zh-cn:截屏;zh-hant:螢幕擷取;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;script&#039;, rule = &#039;zh-cn:脚本; zh-tw:指令碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;script kiddie&#039;, rule = &#039;zh-cn:脚本小子; zh-tw:腳本小子;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;scripting language&#039;, rule = &#039;zh-cn:脚本语言; zh-tw:手稿語言;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;scroll bar&#039;, rule = &#039;zh-cn:滚动条; zh-tw:捲軸;&#039; },&lt;br /&gt;
-- 卷軸用在書卷上，如魔法卷軸；電腦介面上的為捲軸。&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;scroll bar&#039;, rule = &#039;zh-cn:滚动栏; zh-tw:捲軸;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;scroll box&#039;, rule = &#039;zh-cn:滚动框; zh-tw:捲動方塊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;scroll&#039;, rule = &#039;zh-cn:滚动; zh-tw:捲動;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;SDK&#039;, rule = &#039;zh-cn:软件开发工具包; zh-tw:軟體開發套件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;search&#039;, rule = &#039;zh-cn:搜索; zh-tw:搜尋;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;search box&#039;, rule = &#039;zh-cn:搜索框; zh-tw:搜尋方塊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;search key&#039;, rule = &#039;zh-cn:搜索关键字; zh-tw:搜尋鍵碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;second normal form&#039;, rule = &#039;zh-cn:第二范式; zh-tw:第二正規化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;sector&#039;, rule = &#039;zh-cn:扇区; zh-tw:磁區; zh-hk:磁區;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Secure Sockets Layer&#039;, rule = &#039;zh-cn:安全套接层; zh-tw:安全通訊協定;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;security software&#039;, rule = &#039;保安軟體=&amp;gt;zh-cn:安全软件; 保安軟體=&amp;gt;zh-hk:保安軟件; 保安軟體=&amp;gt;zh-mo:保安軟件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;security software&#039;, rule = &#039;zh-tw:安全軟體; zh-cn:安全软件; zh-hk:保安軟件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Semantic Web&#039;, rule = &#039;zh-cn:语义网; zh-tw:語意網;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;semantics&#039;, rule = &#039;zh-cn:语义; zh-tw:語意;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;semaphore&#039;, rule = &#039;zh-cn:信号量; zh-tw:號誌; zh-hant:信號標;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;send&#039;, rule = &#039;zh-cn:发送; zh-tw:傳送;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;send SMS&#039;, rule = &#039;zh-cn:发短信; zh-tw:傳簡訊; zh-hk:傳短訊; zh-sg:发简讯;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Serial port&#039;, rule = &#039;zh-cn:串行接口; zh-tw:串列埠;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Serial port&#039;, rule = &#039;串口=&amp;gt;zh-tw:串列埠;串口=&amp;gt;zh-hk:串列埠;串口=&amp;gt;zh-mo:串列埠;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Serial port&#039;, rule = &#039;串行端口=&amp;gt;zh-tw:串列埠;串行端口=&amp;gt;zh-hk:串列埠;串行端口=&amp;gt;zh-mo:串列埠;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;server&#039;, rule = &#039;zh-cn:服务端; zh-tw:伺服端;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;server&#039;, rule = &#039;zh-cn:服务器; zh-tw:伺服器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;server&#039;, rule = &#039;服務器=&amp;gt;zh-tw:伺服器; 服務器=&amp;gt;zh-hk:伺服器; 服務器=&amp;gt;zh-mo:伺服器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;service framework&#039;, rule = &#039;zh-cn:服务框架; zh-tw:服務架構;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;session&#039;, rule = &#039;zh-cn:會話; zh-tw:對談;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;session hijacking&#039;, rule = &#039;zh-cn:会话劫持; zh-tw:連線劫持;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;setting&#039;, rule = &#039;zh-cn:设置; zh-tw:設定;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;share videos&#039;, rule = &#039;分享视频=&amp;gt;zh-tw:分享影片; 分享视频=&amp;gt;zh-hk:分享影片; 分享视频=&amp;gt;zh-mo:分享影片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;share videos&#039;, rule = &#039;分享視頻=&amp;gt;zh-tw:分享影片; 分享視頻=&amp;gt;zh-hk:分享影片; 分享視頻=&amp;gt;zh-mo:分享影片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;share videos&#039;, rule = &#039;分享影片=&amp;gt;zh-cn:分享视频; 分享影片=&amp;gt;zh-sg:分享视频;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;shared folder&#039;, rule = &#039;分享資料夾=&amp;gt;zh-cn:共享文件夹; 分享資料夾=&amp;gt;zh-sg:共享文件夹;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;shared folder&#039;, rule = &#039;zh-cn:共享文件夹; zh-tw:共用資料夾;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;shortcut&#039;, rule = &#039;zh-cn:快捷方式; zh-tw:捷徑;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;shortcut key&#039;, rule = &#039;zh-cn:快捷键; zh-tw:快速鍵;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;shortcut key&#039;, rule = &#039;捷徑鍵=&amp;gt;zh-cn:快捷键; 捷徑鍵=&amp;gt;zh-sg:快捷键;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Single Link&#039;, rule = &#039;zh-cn:单通道; zh-tw:單鍊結;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;signal&#039;, rule = &#039;zh-cn:信号; zh-tw:訊號;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;signature&#039;, rule = &#039;簽章=&amp;gt;zh-cn:签名; 簽章=&amp;gt;zh-sg:签名;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;silicon wafer&#039;, rule = &#039;zh-cn:硅片; zh-tw:矽片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Site Identity Button&#039;, rule = &#039;zh-cn:站点标识按钮; zh-tw:網站識別鈕;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;sixth normal form&#039;, rule = &#039;zh-cn:第六范式; zh-tw:第六正規化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;slider&#039;, rule = &#039;zh-cn:滑块; zh-tw:滾軸;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;smart&#039;, rule = &#039;zh-cn:智能; zh-hk:智能; zh-sg:智慧; zh-tw:智慧;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;SMS&#039;, rule = &#039;zh-cn:短信; zh-hk:短訊; zh-sg:简讯; zh-tw:簡訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;SMS&#039;, rule = &#039;短消息=&amp;gt;zh-hk:短訊; 短消息=&amp;gt;zh-mo:短訊; 短消息=&amp;gt;zh-sg:简讯; 短消息=&amp;gt;zh-tw:簡訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;SMS&#039;, rule = &#039;短信息=&amp;gt;zh-hk:短訊; 短信息=&amp;gt;zh-mo:短訊; 短信息=&amp;gt;zh-sg:简讯; 短信息=&amp;gt;zh-tw:簡訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;snapshot&#039;, rule = &#039;zh-cn:截图; zh-hk:截圖; zh-tw:截圖;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Snowden&#039;, rule = &#039;zh-cn:斯诺登; zh-hk:斯諾登; zh-tw:史諾登;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;social network&#039;, rule = &#039;zh-hans:社交网络; zh-hk:社交網絡; zh-tw:社群網路; zh-mo:社交網絡;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;social networking site&#039;, rule = &#039;zh-hans:社交网站; zh-hk:社交網站; zh-tw:社群網站; zh-mo:社交網站;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;socket&#039;, rule = &#039;zh-cn:套接字; zh-tw:通訊端;&#039; },&lt;br /&gt;
-- 也有翻作「通訊端點」&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;sockets layer&#039;, rule = &#039;zh-cn:套接层; zh-tw:通訊層;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;software&#039;, rule = &#039;zh-cn:软件; zh-tw:軟體;zh-hk:軟件;&#039; },&lt;br /&gt;
-- 防止「工程」過度轉換成「專案」&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;software engineering&#039;, rule = &#039;zh-cn:软件工程; zh-tw:軟體工程; zh-hk:軟件工程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;software process&#039;, rule = &#039;zh-cn:软件过程; zh-tw:軟體流程;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Sony Mobile&#039;, rule = &#039;zh-tw:索尼行動; zh-cn:索尼移动; zh-hk:索尼流動;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Sony Mobile Communications&#039;, rule = &#039;zh-tw:索尼行動通訊; zh-cn:索尼移动通信; zh-hk:索尼流動通訊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Sony Ericsson&#039;, rule = &#039;zh-tw:索尼益立信; zh-cn:索尼爱立信; zh-hk:索尼愛立信;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Sound card&#039;, rule = &#039;zh-cn:声卡; zh-tw:音效卡;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;source code&#039;, rule = &#039;zh-cn:源代码; zh-tw:原始碼;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;source file&#039;, rule = &#039;zh-cn:源文件; zh-tw:原始檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;spreadsheet&#039;, rule = &#039;电子表格=&amp;gt;zh-tw:電子試算表; 电子表格=&amp;gt;zh-hk:電子試算表;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;spreadsheet&#039;, rule = &#039;試算表=&amp;gt;zh-cn:电子表格; 試算表=&amp;gt;zh-sg:电子表格;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;spider solitaire&#039;, rule = &#039;zh-cn:蜘蛛纸牌; zh-tw:連環新接龍;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;SQL injection&#039;, rule = &#039;資料隱碼=&amp;gt;zh-cn:注入; 資料隱碼=&amp;gt;zh-sg:注入;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;SQL injection&#039;, rule = &#039;zh-cn:注入攻击; zh-tw:隱碼攻擊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;SQL injection&#039;, rule = &#039;zh-cn:SQL注入攻击; zh-tw:SQL資料隱碼攻擊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;stack&#039;, rule = &#039;zh-cn:堆栈; zh-tw:堆疊; zh-hk:堆疊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;stack frame&#039;, rule = &#039;zh-cn:堆栈帧; zh-tw:堆疊框; zh-hk:堆疊框;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;stack frame&#039;, rule = &#039;栈帧=&amp;gt;zh-tw:堆疊框; 栈帧=&amp;gt;zh-hk:堆疊框;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;standard definition&#039;, rule = &#039;zh-cn:标清; zh-tw:標準畫質; zh-hk:標清;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;static typing&#039;, rule = &#039;zh-cn:静态类型; zh-tw:靜態型別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;status bar&#039;, rule = &#039;zh-cn:状态栏; zh-tw:狀態列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;storage&#039;, rule = &#039;zh-cn:存储; zh-tw:儲存;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;stream&#039;, rule = &#039;串流=&amp;gt;zh-cn:流; 串流=&amp;gt;zh-sg:流;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;stream&#039;, rule = &#039;流式=&amp;gt;zh-tw:串流;流式=&amp;gt;zh-hk:串流;流式=&amp;gt;zh-mo:串流;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;stream cipher&#039;, rule = &#039;zh-cn:流密码; zh-tw:串流加密法;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;string&#039;, rule = &#039;zh-cn:字符串; zh-tw:字串;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;strong typing&#039;, rule = &#039;zh-cn:强类型; zh-tw:強型別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;submit&#039;, rule = &#039;送出=&amp;gt;zh-cn:提交; 送出=&amp;gt;zh-sg:提交;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;subnet&#039;, rule = &#039;zh-cn:子网; zh-tw:子網路; zh-hk:子網絡;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;subnet mask&#039;, rule = &#039;zh-cn:子网掩码; zh-tw:子網路遮罩; zh-hk:子網絡遮罩;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;subscriber line&#039;, rule = &#039;zh-cn:用户线; zh-tw:用戶線路;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;suffix&#039;, rule = &#039;zh-cn:后缀; zh-tw:字尾;&#039; },&lt;br /&gt;
-- 有可能過度轉換，編輯時須注意&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;support&#039;, rule = &#039;zh-cn:支持; zh-tw:支援;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;supporter&#039;, rule = &#039;zh-cn:支持者; zh-tw:支持者;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Sun Microsystems&#039;, rule = &#039;zh-tw:昇陽電腦; zh-cn:太阳微系统; zh-hk:太陽電腦;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== T ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;tab&#039;, rule = &#039;zh-cn:标签页; zh-tw:分頁; zh-hk:分頁&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;tab&#039;, rule = &#039;zh-cn:选项卡; zh-tw:索引標籤;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;tablet computer&#039;, rule = &#039;zh-cn:平板电脑;zh-tw:平板電腦;zh-hk:平板電腦&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;tail recursion&#039;, rule = &#039;zh-cn:尾部递归;zh-tw:尾端遞迴;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;target&#039;, rule = &#039;zh-cn:目标软件; zh-tw:目標軟體; zh-hk:目標軟件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;target user&#039;, rule = &#039;目标用户=&amp;gt;zh-tw:目標使用者;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;task bar&#039;, rule = &#039;zh-cn:任务栏; zh-tw:工作列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;task manager&#039;, rule = &#039;zh-cn:任务管理器; zh-tw:工作管理員;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;task switch&#039;, rule = &#039;zh-cn:任务切换; zh-tw:工作切換;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;template&#039;, rule = &#039;樣板=&amp;gt;zh-cn:模板; 樣板=&amp;gt;zh-sg:模板; 樣板=&amp;gt;zh-hk:模板; 樣板=&amp;gt;zh-mo:模板;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;terminator&#039;, rule = &#039;zh-cn:终结器; zh-tw:終端子;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;text&#039;, rule = &#039;文本=&amp;gt;zh-tw:文字;文本=&amp;gt;zh-hk:文字;文本=&amp;gt;zh-mo:文字;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;textbox&#039;, rule = &#039;zh-cn:文本框; zh-tw:文字域; zh-hk:文本框;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;text editor&#039;, rule = &#039;zh-cn:文本编辑器; zh-tw:文字編輯器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;text file&#039;, rule = &#039;zh-cn:文本文件; zh-tw:文字檔案;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;third normal form&#039;, rule = &#039;zh-cn:第三范式; zh-tw:第三正規化&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;thread&#039;, rule = &#039;zh-cn:线程; zh-tw:執行緒;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;thread safe&#039;, rule = &#039;zh-cn:多线程安全; zh-tw:多緒安全;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;through&#039;, rule = &#039;透過=&amp;gt;zh-cn:通过; 透過=&amp;gt;zh-sg:通过;&#039; },--避免 通过测试-&amp;gt;透過測試&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;throw&#039;, rule = &#039;zh-cn:抛出; zh-tw:丟擲; zh-hk:投擲;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;thumbnail&#039;, rule = &#039;zh-cn:缩略图; zh-tw:縮圖;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;title bar&#039;, rule = &#039;zh-cn:标题栏; zh-tw:標題列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;toolbar&#039;, rule = &#039;zh-cn:工具栏; zh-tw:工具列;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;touch&#039;, rule = &#039;zh-cn:触摸; zh-tw:輕觸;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;touchscreen&#039;, rule = &#039;zh-cn:触摸屏; zh-hk:輕觸式熒幕; zh-tw:觸控式螢幕;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;touchscreen&#039;, rule = &#039;zh-cn:触屏; zh-hk:輕觸熒幕; zh-tw:觸控螢幕;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;TouchPad&#039;, rule = &#039;zh-cn:触摸板; zh-tw:觸控板;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;track&#039;, rule = &#039;zh-cn:磁道; zh-tw:磁軌;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Trinitron&#039;, rule = &#039;zh-cn:特丽珑; zh-tw:特麗霓虹;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;troubleshooting&#039;, rule = &#039;zh-cn:疑难解答; zh-tw:疑難排解;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;type&#039;, rule = &#039;型別=&amp;gt;zh-cn:类型; 型別=&amp;gt;zh-sg:类型;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;type checking&#039;, rule = &#039;zh-cn:类型检查; zh-tw:型別檢查;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;type system&#039;, rule = &#039;zh-cn:类型系统; zh-tw:型別系統;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== U ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Ultrabook&#039;, rule = &#039;zh-cn:超极本; zh-hk:Ultrabook; zh-tw:超極致筆電;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Ultrabook&#039;, rule = &#039;超级本=&amp;gt;zh-tw:超極致筆電;超级本=&amp;gt;zh-hk:Ultrabook;超级本=&amp;gt;zh-mo:Ultrabook;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;unary function&#039;, rule = &#039;zh-cn:单参函数; zh-tw:一元函式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;underflow&#039;, rule = &#039;zh-cn:下溢; zh-tw:下限溢位;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;underline&#039;, rule = &#039;zh-cn:下划线; zh-tw:底線;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;undo&#039;, rule = &#039;zh-cn:撤消; zh-tw:復原;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;uninstall&#039;, rule = &#039;卸载=&amp;gt;zh-tw:移除; 卸载=&amp;gt;zh-hk:移除;  卸载=&amp;gt;zh-mo:移除;  卸載=&amp;gt;zh-tw:移除;  卸載=&amp;gt;zh-hk:移除;  卸載=&amp;gt;zh-mo:移除;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;uninstall&#039;, rule = &#039;zh-cn:卸载; zh-tw:解除安裝;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Universal Serial Bus&#039;, rule = &#039;zh-cn:通用串行总线; zh-tw:通用序列匯流排;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;upload&#039;, rule = &#039;zh-cn:上传; zh-hk:上載; zh-tw:上傳;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;UPS&#039;, rule = &#039;zh-cn:电源保护; zh-tw:不斷電系統;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;USB flash drive&#039;, rule = &#039;zh-cn:U盘; zh-tw:USB隨身碟; zh-hk:USB記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;USB flash drive&#039;, rule = &#039;隨身碟=&amp;gt;zh-cn:U盘;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;URL redirection&#039;, rule = &#039;zh-cn:URL重定向; zh-tw:網域名稱轉址;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;user&#039;, rule = &#039;使用者=&amp;gt;zh-cn:用户; 使用者=&amp;gt;zh-sg:用户;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;user&#039;, rule = &#039;用户=&amp;gt;zh-tw:使用者;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;username&#039;, rule = &#039;使用者名稱=&amp;gt;zh-cn:用户名; 使用者名稱=&amp;gt;zh-sg:用户名; 用户名=&amp;gt;zh-tw:使用者名稱; 用户名=&amp;gt;zh-hk:使用者名稱;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;username&#039;, rule = &#039;用户名=&amp;gt;zh-mo:使用者名稱; 用戶名=&amp;gt;zh-tw:使用者名稱; 用戶名=&amp;gt;zh-hk:使用者名稱; 用戶名=&amp;gt;zh-mo:使用者名稱;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;user interface&#039;, rule = &#039;zh-cn:用户界面; zh-tw:使用者介面; zh-hk:使用者介面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;user interface&#039;, rule = &#039;zh-cn:人机界面; zh-tw:人機介面; zh-hk:人機介面;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== V ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;variable&#039;, rule = &#039;zh-cn:变量; zh-tw:變數;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;variable bitrate&#039;, rule = &#039;zh-cn:可变码率; zh-tw:可變位元速率; zh-hk:動態編碼率;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;vector&#039;, rule = &#039;zh-cn:矢量; zh-tw:向量&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;VGA connector&#039;, rule = &#039;zh-cn:视频接口; zh-tw:視訊接頭 ;zh-hk:影像端子;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video&#039;, rule = &#039;視像=&amp;gt;zh-tw:畫面; 視像=&amp;gt;zh-cn:视频;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video&#039;, rule = &#039;視訊=&amp;gt;zh-cn:视频;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video&#039;, rule = &#039;影像=&amp;gt;zh-cn:视频; 影像=&amp;gt;zh-tw:影像;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video&#039;, rule = &#039;視頻=&amp;gt;zh-hk:影片; zh-tw:影片; zh-cn:视频&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video&#039;, rule = &#039;视频=&amp;gt;zh-tw:影片; zh-hk:影片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video document&#039;, rule = &#039;zh-cn:视频文档; zh-tw:視訊文件;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video file&#039;, rule = &#039;zh-cn:视频文件; zh-tw:影片檔; zh-hk:影片檔&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video game&#039;, rule = &#039;zh-cn:视频游戏; zh-tw:電動遊戲; zh-hk:視像遊戲;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video sharing&#039;, rule = &#039;视频分享=&amp;gt;zh-tw:影片分享; 视频分享=&amp;gt;zh-hk:影片分享; 视频分享=&amp;gt;zh-mo:影片分享;&#039; },	&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video sharing&#039;, rule = &#039;視頻分享=&amp;gt;zh-tw:影片分享; 視頻分享=&amp;gt;zh-hk:影片分享; 視頻分享=&amp;gt;zh-mo:影片分享;&#039; },	&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video sharing&#039;, rule = &#039;影片分享=&amp;gt;zh-cn:视频分享; 影片分享=&amp;gt;zh-sg:视频分享;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video website&#039;, rule = &#039;视频网站=&amp;gt;zh-tw:影片網站; 视频网站=&amp;gt;zh-hk:影片網站; 视频网站=&amp;gt;zh-mo:影片網站;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video website&#039;, rule = &#039;視頻網站=&amp;gt;zh-tw:影片網站; 視頻網站=&amp;gt;zh-hk:影片網站; 視頻網站=&amp;gt;zh-mo:影片網站;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video website&#039;, rule = &#039;影片網站=&amp;gt;zh-cn:视频网站; 影片網站=&amp;gt;zh-sg:视频网站;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video memory&#039;, rule = &#039;zh-cn:显存; zh-tw:視訊記憶體; zh-hk:影像記憶體;&#039; },&lt;br /&gt;
-- 此條為视频與視訊轉換的例外，因出現頻率高而加在此處。&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;video processor&#039;, rule = &#039;zh-cn:视频处理器; zh-tw:畫面處理器; zh-hk:影像處理器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;view&#039;, rule = &#039;zh-cn:查看; zh-tw:檢視;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;virtual community&#039;, rule = &#039;zh-cn:虚拟社区; zh-tw:虛擬社群;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;virtual function&#039;, rule = &#039;zh-cn:虚函数; zh-tw:虛擬函式;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;virtual machine&#039;, rule = &#039;zh-cn:虚拟机; zh-tw:虛擬機器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;virtual memory&#039;, rule = &#039;zh-cn:虚拟内存; zh-tw:虛擬記憶體;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Virtualization Technology&#039;, rule = &#039;zh-cn:虚拟化技术; zh-tw:虛擬化技術;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;visit&#039;, rule = &#039;造訪=&amp;gt;zh-cn:访问; 造訪=&amp;gt;zh-sg:访问;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;visual&#039;, rule = &#039;zh-cn:可视化; zh-tw:視覺化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;volatile (memory)&#039;, rule = &#039;zh-cn:易失性; zh-tw:揮發性;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;volume&#039;, rule = &#039;磁碟區=&amp;gt;zh-hans:卷;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Logical volume management&#039;, rule = &#039;zh-tw:邏輯捲軸管理;zh-cn:逻辑卷管理;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Virtual Private Network&#039;, rule = &#039;zh-tw:虛擬私人網路;zh-cn:虚拟专用网;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;von Neumann&#039;, rule = &#039;zh-tw:馮·紐曼;zh-cn:冯·诺伊曼&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== W ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;wallpaper&#039;, rule = &#039;zh-cn:壁纸; zh-tw:桌布;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;watermark&#039;, rule = &#039;zh-cn:水印; zh-tw:浮水印;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Watson&#039;, rule = &#039;zh-cn:沃森; zh-tw:華生;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;weak typing&#039;, rule = &#039;zh-cn:弱类型; zh-tw:弱型別;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;webcam&#039;, rule = &#039;zh-cn:摄像头; zh-tw:網路攝影機; zh-hk:網絡攝影機;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Wide Area Network&#039;, rule = &#039;zh-cn:广域网; zh-tw:廣域網路;&#039; },&lt;br /&gt;
-- Microsoft Windows操作系统稱作視窗。&lt;br /&gt;
-- {{CItemHidden|original=window|zh-cn:窗口; zh-tw:視窗;}}&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;window manager&#039;, rule = &#039;zh-cn:窗口管理器; zh-tw:視窗管理員;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Western Digital&#039;, rule = &#039;zh-cn:西部数据; zh-tw:威騰電子;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Windows Explorer&#039;, rule = &#039;zh-cn:资源管理器; zh-tw:檔案總管;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;wireless&#039;, rule = &#039;zh-cn:无线; zh-tw:無線;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;wizard&#039;, rule = &#039;zh-cn:向导; zh-tw:精靈;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;word process&#039;, rule = &#039;zh-cn:文字处理; zh-tw:文書處理;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;word processor&#039;, rule = &#039;zh-cn:文字处理器; zh-tw:文書處理器;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;workgroup&#039;, rule = &#039;zh-cn:工作组; zh-tw:工作群組;&#039; },&lt;br /&gt;
-- * [http://terms.nict.gov.tw/search1.php?s=world+wide+web&amp;amp;type=&amp;amp;s_type=0&amp;amp;Submit2=%ACd%A1%40%A1%40%B8%DF 國立編譯館]：全球資訊網、全球資訊網協會&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;World Wide Web&#039;, rule = &#039;zh-cn:万维网; zh-tw:全球資訊網; zh-hk:萬維網;&#039; },&lt;br /&gt;
-- 「zh-cn:万维网联盟; zh-tw:全球資訊網協會」已進入全局轉換&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;World Wide Web Consortium&#039;, rule = &#039;zh-cn:万维网联盟; zh-tw:全球資訊網協會; zh-hk:萬維網聯盟;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;write protection&#039;, rule = &#039;zh-cn:写保护; zh-tw:防寫;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;wubi&#039;, rule = &#039;zh-cn:五笔字型; zh-tw:五筆字型;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Wind River&#039;, rule = &#039;zh-cn:风河; zh-tw:溫瑞爾;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== X ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Xerox&#039;, rule = &#039;zh-cn:施乐; zh-tw:全錄; zh-hk:施樂&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;X window system&#039;, rule = &#039;zh-cn:X窗口系统; zh-tw:X視窗系統; zh-hk:X Window系統;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== Y ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== Z ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Zuckerberg&#039;, rule = &#039;zh-cn:扎克伯格; zh-tw:祖克柏; zh-hk:朱克伯格;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== 其他 ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:浏览框; zh-tw:瀏覽域;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:定位框; zh-tw:定位域;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-tw:電信商; zh-cn:电信商; zh-hk:電訊商;&#039; },&lt;br /&gt;
-- 請勿添加單獨的「電信/电信/電訊」之轉換，該詞有可能是某些電信公司官方名稱中的一部分。舉個例子，如果轉換的話，「電訊盈科」則變成「電信盈科」，「中華電信」則變成「中華電訊」。&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-tw:電信公司; zh-cn:电信公司; zh-hk:電訊公司;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-tw:電信業; zh-cn:电信业; zh-hk:電訊業;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-tw:電信業者; zh-cn:电信运营商; zh-hk:電訊供應商;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-tw:電信服務; zh-cn:电信服务; zh-hk:電訊服務;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-tw:電信行業; zh-cn:电信行业; zh-hk:電訊行業;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-tw:資料包括; zh-hk:數據包括; zh-cn:数据包括;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-tw:資料包含; zh-hk:數據包含; zh-cn:数据包含;&#039; },&lt;br /&gt;
-- 简中少用“撷”&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;擷=&amp;gt;zh-hans:截; 擷=&amp;gt;zh-cn:截; 擷=&amp;gt;zh-sg:截;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:乔布斯; zh-tw:賈伯斯; zh-hk:喬布斯;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:鲍尔默; zh-tw:巴爾默;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:扒站; zh-tw:砍站;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;文檔=&amp;gt;zh-cn:文档; 文檔=&amp;gt;zh-sg:文档;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:汉化; zh-tw:中文化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Chinese traditional&#039;, rule = &#039;正體=&amp;gt;zh-cn:繁体; 正體=&amp;gt;zh-sg:繁体; 正體=&amp;gt;zh-hk:繁體; 正體=&amp;gt;zh-mo:繁體;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== 防止過度轉換 ==&lt;br /&gt;
]] },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;contacts&#039;, rule = &#039;zh-hans:通讯录; zh-hant:通訊錄;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;email address&#039;, rule = &#039;zh-hans:电邮地址; zh-hant:電郵地址;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;modulation&#039;, rule = &#039;zh-hans:调制; zh-hant:調制;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;References&#039;, rule = &#039;zh-hans:参考资料; zh-hant:參考資料;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;personal website&#039;, rule = &#039;zh-hans:个人网站; zh-hant:個人網站;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;personal website&#039;, rule = &#039;zh-hans:个人网页; zh-hant:個人網頁;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;emoji&#039;, rule = &#039;zh-hans:绘文字; zh-hant:繪文字;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:电视频; zh-hant:電視頻;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:电影片; zh-hant:電影片;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:字符号; zh-hant:字符號;&#039; },&lt;br /&gt;
-- 以下均为名從主人&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;China Telecom&#039;, rule = &#039;zh-hans:中国电信; zh-hant:中國電信;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Chunghwa Telecom&#039;, rule = &#039;zh-hans:中华电信; zh-hant:中華電信;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:网民报告; zh-hant:網民報告;&#039; },-- （泡泡網民報告）&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:网络电视台; zh-hant:網絡電視台;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:网路电视台; zh-hant:網路電視台;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:网络广播电视台; zh-hant:網絡廣播電視台;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:网络安全和信息化; zh-hant:網絡安全和信息化;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:互联网信息办公室; zh-hant:互聯網信息辦公室;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;CAC&#039;, rule = &#039;zh-hans:中共中央网络安全和信息化领导小组办公室; zh-hant:中共中央網絡安全和信息化領導小組辦公室;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;CNCERT&#039;, rule = &#039;zh-hans:国家互联网应急中心; zh-hant:國家互聯網應急中心;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;CNCERT&#039;, rule = &#039;zh-hans:互联网应急中心; zh-hant:互聯網應急中心;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;CNNIC&#039;, rule = &#039;zh-hans:中国互联网络信息中心; zh-hant:中國互聯網絡信息中心;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;CNNIC&#039;, rule = &#039;zh-hans:互联网络信息中心; zh-hant:互聯網絡信息中心;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Industry and Information Technologyrule&#039;, rule = &#039;zh-hans:工业和信息化; zh-hant:工業和信息化;&#039; },-- 中华人民共和国工业和信息化部&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Hudong Baike&#039;, rule = &#039;zh-hans:互动百科; zh-hant:互動百科;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;World Internet Conference&#039;, rule = &#039;zh-hans:世界互联网大会; zh-hant:世界互聯網大會;&#039; },&lt;br /&gt;
-- 防止「共享」過度轉換&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Wikimedia Commons&#039;, rule = &#039;zh-hans:维基共享资源; zh-hant:維基共享資源;&#039; },&lt;br /&gt;
-- 防止「數據」過度轉換&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Wikidata&#039;, rule = &#039;zh-hans:维基数据; zh-hant:維基數據;&#039; },&lt;br /&gt;
-- 以下均为防止“视频”过度转换&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Baidu Video&#039;, rule = &#039;zh-hans:百度视频; zh-hant:百度視頻;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Netease Video&#039;, rule = &#039;zh-hans:网易视频; zh-hant:網易視頻;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Sina Video&#039;, rule = &#039;zh-hans:新浪视频; zh-hant:新浪視頻;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Sohu Video&#039;, rule = &#039;zh-hans:搜狐视频; zh-hant:搜狐視頻;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Tencent Video&#039;, rule = &#039;zh-hans:腾讯视频; zh-hant:騰訊視頻;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Tudou Video&#039;, rule = &#039;zh-hans:土豆视频; zh-hant:土豆視頻;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Youku Video&#039;, rule = &#039;zh-hans:优酷视频; zh-hant:優酷視頻;&#039; },&lt;br /&gt;
-- 以下均为防止“博客”过度转换&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Netease Blog&#039;, rule = &#039;zh-hans:网易博客; zh-hant:網易博客;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Sina Blog&#039;, rule = &#039;zh-hans:新浪博客; zh-hant:新浪博客;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Sohu Blog&#039;, rule = &#039;zh-hans:搜狐博客; zh-hant:搜狐博客;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Tencent Blog&#039;, rule = &#039;zh-hans:腾讯博客; zh-hant:騰訊博客;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Williamlong&#039;, rule = &#039;zh-hans:月光博客; zh-hant:月光博客;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;bookstw&#039;, rule = &#039;zh-hans:博客来; zh-hant:博客來;&#039; },-- 台灣的博客來網路書店&lt;br /&gt;
-- 以下均为防止“相册”过度转换&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Netease Album&#039;, rule = &#039;zh-hans:网易相册; zh-hant:網易相冊;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Baidu Album&#039;, rule = &#039;zh-hans:百度相册; zh-hant:百度相冊;&#039; },&lt;br /&gt;
-- 以下均为防止“搜索”过度转换&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;360 Search&#039;, rule = &#039;zh-hans:360搜索; zh-hant:360搜索;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Baidu Search&#039;, rule = &#039;zh-hans:百度搜索; zh-hant:百度搜索;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Sogou Search&#039;, rule = &#039;zh-hans:搜狗搜索; zh-hant:搜狗搜索;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:360综合搜索; zh-hant:360綜合搜索;&#039; },&lt;br /&gt;
-- 防止公司名稱過度轉換&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;Alibaba.com Ltd.&#039;, rule = &#039;zh-hans:阿里巴巴网络; zh-hant:阿里巴巴網絡;&#039; },&lt;br /&gt;
-- 防止“社区”过度转换&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:草榴社区; zh-hant:草榴社區;&#039; },&lt;br /&gt;
-- 以下均为防止“移动”过度转换&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;China Mobile&#039;, rule = &#039;zh-hans:中国移动; zh-hant:中國移動;&#039; },&lt;br /&gt;
-- 以下均为防止“移动版”过度转换&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:移动版面; zh-hant:移動版面;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:移动版块; zh-hant:移動版塊;&#039; },&lt;br /&gt;
-- 防止“智能”过度转换&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:智能ABC; zh-hant:智能ABC;&#039; },&lt;br /&gt;
-- 防止“套件”过度转换&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:伯克利软件套件; zh-tw:柏克萊軟體套件;&#039; },&lt;br /&gt;
-- “命令列”過度轉換&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:命令列表; zh-tw:命令列表;&#039; },&lt;br /&gt;
-- 以下均为防止“支持”过度转换&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;I support&#039;, rule = &#039;zh-hans:我支持; zh-hant:我支持;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;support me&#039;, rule = &#039;zh-hans:支持我; zh-hant:支持我;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;support you&#039;, rule = &#039;zh-hans:支持你; zh-hant:支持你;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;support you&#039;, rule = &#039;zh-hans:支持您; zh-hant:支持您;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;support he&#039;, rule = &#039;zh-hans:支持他; zh-hant:支持他;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, original = &#039;support she&#039;, rule = &#039;zh-hans:支持她; zh-hant:支持她;&#039; },&lt;br /&gt;
-- 以下均为防止“檔”单字过度转换&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:档次; zh-tw:等級;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:高档; zh-tw:高檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:中档; zh-tw:中檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:低档; zh-tw:低檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:换档; zh-tw:換檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:搭档; zh-tw:搭檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:归档; zh-tw:歸檔;&#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-cn:回档; zh-tw:回檔;&#039; },&lt;br /&gt;
-- 防止“优化”過度轉換&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-tw:最佳化; zh-cn:最优化; &#039; },&lt;br /&gt;
{ type = &#039;item&#039;, rule = &#039;zh-hans:连接线; zh-hant:連接線;&#039; },&lt;br /&gt;
-- 防止“列表”=&amp;gt;“清单”过度转换&lt;br /&gt;
{ type = &amp;quot;item&amp;quot;, rule = &#039;zh-cn:序列; zh-tw:序列;&#039; },&lt;br /&gt;
{ type = &#039;text&#039;, text = [[&lt;br /&gt;
== 已全域轉換 ==&lt;br /&gt;
]] },&lt;br /&gt;
-- {{CItemHidden|original=algorithm|zh-cn:算法; zh-tw:演算法;}}&lt;br /&gt;
-- {{CItemHidden|original=bandwidth|zh-tw:頻寬; zh-cn:带宽; }}&lt;br /&gt;
-- {{CItemHidden|original=broadband|zh-tw:寬頻; zh-cn:宽带; }}&lt;br /&gt;
-- {{CItemHidden|original=bus|zh-tw:匯流排; zh-cn:总线; }}&lt;br /&gt;
-- {{CItemHidden|original=character|zh-cn:字符; zh-tw:字元;}}&lt;br /&gt;
-- {{CItemHidden|original=chip|zh-cn:芯片; zh-tw:晶片;}}&lt;br /&gt;
-- {{CItemHidden|original=chipset|zh-cn:芯片组; zh-tw:晶片組;}}&lt;br /&gt;
-- {{CItemHidden|original=cursor|zh-cn:光标; zh-tw:游標;}}&lt;br /&gt;
-- {{CItemHidden|original=default|zh-cn:缺省; zh-tw:預設;}}&lt;br /&gt;
-- {{CItemHidden|original=disk|zh-cn:磁盘; zh-tw:磁碟;}}&lt;br /&gt;
-- {{CItemHidden|original=firmware|zh-cn:固件; zh-tw:韌體;}}&lt;br /&gt;
-- {{CItemHidden|original=floppy drive|zh-cn:软驱; zh-tw:軟碟機; zh-hk:軟磁碟機}}&lt;br /&gt;
-- {{CItemHidden|original=hacker|zh-cn:黑客; zh-tw:駭客; zh-hk:黑客;}}&lt;br /&gt;
-- {{CItemHidden|original=hard disk|zh-cn:硬盘; zh-tw:硬碟;}}&lt;br /&gt;
-- {{CItemHidden|original=hyperlink|zh-cn:超链接; zh-tw:超連結;}}&lt;br /&gt;
-- {{CItemHidden|original=Internet|zh-cn:互联网; zh-tw:網際網路;}}&lt;br /&gt;
-- {{CItemHidden|original=kernel|zh-cn:内核; zh-tw:核心;}}&lt;br /&gt;
-- {{CItemHidden|original=linker|zh-cn:链接器; zh-tw:連結器;}}&lt;br /&gt;
-- {{CItemHidden|original=links|zh-cn:链接; zh-tw:連結;}}&lt;br /&gt;
-- {{CItemHidden|original=mobile phone|zh-cn:移动电话; zh-tw:行動電話; zh-hk:流動電話;}}&lt;br /&gt;
-- {{CItemHidden|original=mobility|zh-cn:便携式; zh-tw:攜帶型;}}&lt;br /&gt;
-- {{CItemHidden|original=modem|zh-cn:调制解调器; zh-tw:數據機;}}&lt;br /&gt;
-- {{CItemHidden|original=mouse|zh-cn:鼠标; zh-tw:滑鼠}}&lt;br /&gt;
-- {{CItemHidden|original=network|zh-cn:网络; zh-tw:網路;}}&lt;br /&gt;
-- {{CItemHidden|original=offline|zh-cn:脱机; zh-tw:離線;}}&lt;br /&gt;
-- {{CItemHidden|original=print|zh-cn:打印; zh-tw:列印;}}&lt;br /&gt;
-- {{CItemHidden|original=printer|zh-cn:打印机; zh-tw:印表機;}}&lt;br /&gt;
-- {{CItemHidden|original=register|zh-cn:寄存器; zh-tw:暫存器;}}&lt;br /&gt;
-- {{CItemHidden|original=resolution|zh-cn:分辨率; zh-hk:解像度; zh-tw:解析度;}}&lt;br /&gt;
-- {{CItemHidden|original=screen|zh-cn:屏幕; zh-tw:螢幕;}}&lt;br /&gt;
-- {{CItemHidden|original=server|zh-cn:服务器; zh-tw:伺服器; zh-hk:伺服器; zh-sg:伺服器;}}&lt;br /&gt;
-- {{CItemHidden|original=shortcut|zh-cn:快捷方式; zh-tw:捷徑;}}&lt;br /&gt;
-- {{CItemHidden|original=Smart card|zh-cn:智能卡; zh-tw:智慧卡; zh-hk:智能卡; zh-sg:智慧卡;}}&lt;br /&gt;
-- {{CItemHidden|original=software|zh-cn:软件; zh-tw:軟體; zh-hk:軟件;}}&lt;br /&gt;
-- {{CItemHidden|original=sound card|zh-cn:声卡; zh-tw:音效卡;}}&lt;br /&gt;
-- {{CItemHidden|original=source|zh-cn:源代码; zh-tw:原始碼;}}&lt;br /&gt;
-- {{CItemHidden|original=thread|zh-cn:线程; zh-tw:執行緒;}}&lt;br /&gt;
-- {{CItemHidden|original=variable|zh-cn:变量; zh-tw:變數;}}&lt;br /&gt;
-- {{CItemHidden|original=video card|zh-cn:显卡; zh-tw:顯示卡; zh-sg:显卡;}}&lt;br /&gt;
-- {{CItemHidden|original=online|zh-cn:在线; zh-tw:線上;}}&lt;br /&gt;
-- {{CItemHidden|zh-cn:加载; zh-tw:載入;}}&lt;br /&gt;
-- {{CItemHidden|zh-cn:磁道; zh-tw:磁軌;}}&lt;br /&gt;
-- {{CItemHidden|zh-cn:硅片; zh-tw:矽片;}}&lt;br /&gt;
-- {{CItemHidden|zh-cn:异步; zh-tw:非同步;}}&lt;br /&gt;
-- {{CItemHidden|zh-cn:横屏幕; zh-tw:橫螢幕;}}&lt;br /&gt;
-- {{CItemHidden|zh-hans:在线; zh-hant:線上;}}&lt;br /&gt;
-- {{CItemHidden|zh-hans:链接; zh-hant:連結;}}&lt;br /&gt;
-- {{CItemHidden|zh-hans:图形计算器; zh-hant:繪圖計算機;}}&lt;br /&gt;
{ type = &#039;text&#039;, text = [=[&lt;br /&gt;
== 外部連結 ==&lt;br /&gt;
*[http://ihome.ust.hk/~lbsun/terms.html 英漢計算機及網絡通訊技術詞彙]&lt;br /&gt;
*[http://www.iicm.org.tw/term/termb_0.htm 電腦名詞譯名]&lt;br /&gt;
*[http://terms.naer.edu.tw/download/278/ 下載：兩岸對照名詞-計算機名詞]（[[國家教育研究院]]）&lt;br /&gt;
&lt;br /&gt;
[[Category:公共转换组模块|{{SUBPAGENAME}}]]&lt;br /&gt;
]=] },&lt;br /&gt;
&lt;br /&gt;
},&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:Templatedataheader&amp;diff=7446</id>
		<title>Template:Templatedataheader</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:Templatedataheader&amp;diff=7446"/>
		<updated>2016-06-10T12:07:13Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​导入1个版本：Template:Cite web&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#重定向 [[Template:TemplateDataHeader]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:TemplateDataHeader&amp;diff=7444</id>
		<title>Template:TemplateDataHeader</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:TemplateDataHeader&amp;diff=7444"/>
		<updated>2016-06-10T12:07:13Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​导入1个版本：Template:Cite web&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{#if:{{{noheader|}}}| |这是一个用于新版[[Wikipedia:可视化编辑器|-{zh-cn:可视化编辑器;zh-tw:視覺化編輯器;}-]]的[[Wikipedia:可视化编辑器/模板数据|-{zh-cn:模板数据;zh-tw:模板資料}-]]-{zh-cn:文档;zh-tw:文件;}-。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;{{{1|{{BASEPAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:TemplateData文档]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:Namespace&amp;diff=7442</id>
		<title>Template:Namespace</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:Namespace&amp;diff=7442"/>
		<updated>2016-06-10T12:07:05Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​导入1个版本：Template:Cite web&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#ifeq:{{NAMESPACE}}|{{ns:{{{namespace|{{{1|}}}}}}}}|{{{then|{{{2|}}}}}}|{{{else|{{{3|}}}}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:Fact&amp;diff=7440</id>
		<title>Template:Fact</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:Fact&amp;diff=7440"/>
		<updated>2016-06-10T12:06:49Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​导入1个版本：Template:Cite web&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if: {{{1|&amp;lt;noinclude&amp;gt;1&amp;lt;/noinclude&amp;gt;}}}|&amp;lt;mark class=&amp;quot;template-facttext&amp;quot; title=&amp;quot;需要提供文献来源&amp;quot;&amp;gt;{{{1|&amp;lt;noinclude&amp;gt;没有来源的文字&amp;lt;/noinclude&amp;gt;}}}&amp;lt;/mark&amp;gt;}}&amp;lt;sup class=&amp;quot;noprint Template-Fact&amp;quot;&amp;gt;[[Wikipedia:列明来源|&amp;lt;span style=&amp;quot;white-space: nowrap;&amp;quot; title=&amp;quot;来源请求{{#if:{{{time|}}}|开始于{{#time:Y年Fj日|{{{time|&amp;lt;noinclude&amp;gt;{{#time:c}}&amp;lt;/noinclude&amp;gt;}}}}}}}。&amp;quot;&amp;gt;&amp;amp;#91;來源請求&amp;amp;#93;&amp;lt;/span&amp;gt;]]&amp;lt;includeonly&amp;gt;{{namespace||[[Category:{{#if:{{{time|}}}|自{{#time:Y年F|{{{time}}}}}}}有未列明来源语句的条目|{{#switch:{{#if:{{{time|}}}|{{#time:j|{{{time}}}}}}}|1=㏠|2=㏡|3=㏢|4=㏣|5=㏤|6=㏥|7=㏦|8=㏧|9=㏨|10=㏩|11=㏪|12=㏫|13=㏬|14=㏭|15=㏮|16=㏯|17=㏰|18=㏱|19=㏲|20=㏳|21=㏴|22=㏵|23=㏶|24=㏷|25=㏸|26=㏹|27=㏺|28=㏻|29=㏼|30=㏽|31=㏾}}{{#if:{{{date|}}}|旧}}{{#if:{{{time|}}}||无}}{{PAGENAME}}]]}}&amp;lt;/includeonly&amp;gt;&amp;lt;/sup&amp;gt;&amp;lt;noinclude&amp;gt;{{模板文档}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:Cite_web/doc&amp;diff=7438</id>
		<title>Template:Cite web/doc</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:Cite_web/doc&amp;diff=7438"/>
		<updated>2016-06-10T12:06:40Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​导入1个版本：Template:Cite web&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{lua|模块:Citation/CS1}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Template doc page viewed directly}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{NoteTA|G1=IT}}&lt;br /&gt;
描写维基条目时经常需要参考网络上的各种资源，因此更多地使用这个模板可以将所参考的来源记录下来，以便浏览者以及之后的编写者找到这些来源资料。&lt;br /&gt;
&lt;br /&gt;
本模板是用來列明維基條目中&#039;&#039;&#039;非新聞來源&#039;&#039;&#039;（參見[[Wikipedia:列明来源|列明來源]]的關於維基條目列明的一般注意事項，並參見{{tl|Cite news}}以學習如何列名&#039;&#039;&#039;新聞來源&#039;&#039;&#039;）。&amp;lt;br /&amp;gt;此模板用来取代過時的&#039;&#039;&#039;{{tl|Web reference}}&#039;&#039;&#039;。它的參數&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;僅允許小寫&amp;lt;/span&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==模板數據==&lt;br /&gt;
{{templatedataheader}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;用來列明維基條目中来自网站的來源。新闻、图书、期刊等不适用这个模板&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;url&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;網址&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;网站页面的網址。開頭必須帶有通訊協議 例如http://或https://。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;title&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;標題&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;网站页面的標題。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;accessdate&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;访问日期&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;date&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;可使用ISO 8601中規定的YYYY-MM-DD格式，例如accessdate= 2013-07-26。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;author&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;作者&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;作者的名字。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;date&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;發表日期&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;date&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;原文出版或發表的日期，請使用包括年、月、日的完整日期格式並與所寫條目風格保持一致。不能與year或month參數同時使用。建议使用ISO 8601中規定的YYYY-MM-DD格式，例如date= 2013-07-26。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;last&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;姓&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;作者的姓。不要与author参数同时使用&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;first&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;名&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;作者的名字。不要与author参数同时使用&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;authorlink&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;作者條目&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string/wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;鏈接至作者的維基百科條目。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;coauthors&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;共同作者&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;另外的共同作者。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;year&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;发表年份&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;发表年份。不能與date參數同時使用。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;month&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;发表月份&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;发表月份。不能與date參數同時使用。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;format&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;文件格式&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;文件格式，例如PDF文件。此項為空則被缺省認為是HTML格式。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;work&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;作品&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;如果這個引用項是包括在一個更大「作品」之中，例如是一本書、一份期刊雜誌或是一個網站，那麼請寫下這個「作品」的名字。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;publisher&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;出版者&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;如果存在出版者，例如這個網站是由某個政府服務部門、教育機構或公司來提供運作，則可以在此輸入名字。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;pages&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;頁數&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;引用項所在的頁數或者是所在的起始頁和終止頁，而不是在此寫明所引用書籍的總頁數。此項在引用項為PDF文件時特別有用。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;language&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;語言&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;引用項使用的語言（為中文時作為缺省情況可以不用提示）。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;doi&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;DOI&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;有關文檔的數位物件識別號（DOI）。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;archiveurl&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;存檔網址&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;重要的網頁可以被類似WebCite這樣的網站存檔，這時候這個參數應該是這個存檔副本的網頁網址（需要同時使用archivedate參數）。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;archivedate&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;存檔日期&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;date&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;此文檔存檔的日期（需要同時使用archiveurl參數），請使用ISO 8601YYYY-MM-DD格式，例如2006-02-17。不需要在輸入日期時加上維基鏈接，它會自動被系統加上。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;quote&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;引文&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;被引用的相關原文。&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},	&lt;br /&gt;
	&amp;quot;maps&amp;quot;: {&lt;br /&gt;
		&amp;quot;citoid&amp;quot;: {&lt;br /&gt;
			&amp;quot;title&amp;quot;: &amp;quot;title&amp;quot;,&lt;br /&gt;
			&amp;quot;url&amp;quot;: &amp;quot;url&amp;quot;,&lt;br /&gt;
			&amp;quot;subject&amp;quot;: &amp;quot;title&amp;quot;,&lt;br /&gt;
			&amp;quot;publicationTitle&amp;quot;: &amp;quot;work&amp;quot;,&lt;br /&gt;
			&amp;quot;seriesTitle&amp;quot;: &amp;quot;work&amp;quot;,&lt;br /&gt;
			&amp;quot;publisher&amp;quot;: &amp;quot;publisher&amp;quot;,&lt;br /&gt;
			&amp;quot;date&amp;quot;: &amp;quot;date&amp;quot;,&lt;br /&gt;
			&amp;quot;pages&amp;quot;: &amp;quot;pages&amp;quot;,&lt;br /&gt;
			&amp;quot;accessDate&amp;quot;: &amp;quot;accessdate&amp;quot;,&lt;br /&gt;
			&amp;quot;language&amp;quot;: &amp;quot;language&amp;quot;,&lt;br /&gt;
			&amp;quot;author&amp;quot;: [&lt;br /&gt;
				[&lt;br /&gt;
					&amp;quot;first&amp;quot;,&lt;br /&gt;
					&amp;quot;last&amp;quot;&lt;br /&gt;
				]&lt;br /&gt;
			]&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==模板用法==&lt;br /&gt;
===常用格式===&lt;br /&gt;
;常用格式（带有当前查阅日期）&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;{{Cite web |url= |title= |accessdate=&amp;lt;/nowiki&amp;gt;{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}&amp;lt;nowiki&amp;gt; |work= |publisher= |date= }}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;使用作者姓名参数（名在前，姓在后）以及共同作者参数（带有当前查阅日期）&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;{{Cite web |url= |title= |accessdate=&amp;lt;/nowiki&amp;gt;{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}&amp;lt;nowiki&amp;gt; |last= |first= |coauthors= |date= |work= |publisher=}}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;使用作者参数（带有当前查阅日期）&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;{{Cite web |url= |title= |accessdate=&amp;lt;/nowiki&amp;gt;{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}&amp;lt;nowiki&amp;gt; |author= |date= |work= |publisher=}}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;使用非链式查阅日期格式及最终作者、最初作者参数&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;{{Cite web |url= |title= |accessmonthday= |last= |first= |date= |work= |publisher= }}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;使用非链式查阅日期格式及作者参数&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;{{Cite web |url= |title= |accessmonthday= |author= |date= |work= |publisher= }}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===全部参数===&lt;br /&gt;
该模版参数既可竖式也可横式排列，使用时复制下列文字并删除不需要的参数即可。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
!横式排列的全部参数（请左键三击选中）&lt;br /&gt;
|- width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-family:Courier;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;{{Cite web|url=|title=|accessdate=&amp;lt;/nowiki&amp;gt;{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}&amp;lt;nowiki&amp;gt;|author=|last=|first=|authorlink=|coauthors=|date=|year=|month=|format=|work=|publisher=|pages=|language=|doi=|archiveurl=|archivedate=|quote=}}&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;竖式排列的全部参数（请拖动选中）&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Cite web&lt;br /&gt;
|url= &lt;br /&gt;
|title= &lt;br /&gt;
|accessdate= &lt;br /&gt;
|author= &lt;br /&gt;
|last= &lt;br /&gt;
|first= &lt;br /&gt;
|authorlink= &lt;br /&gt;
|coauthors= &lt;br /&gt;
|date= &lt;br /&gt;
|year= &lt;br /&gt;
|month= &lt;br /&gt;
|trans_title = &lt;br /&gt;
|format= &lt;br /&gt;
|work= &lt;br /&gt;
|publisher= &lt;br /&gt;
|pages= &lt;br /&gt;
|language= &lt;br /&gt;
|doi= &lt;br /&gt;
|archiveurl= &lt;br /&gt;
|archivedate= &lt;br /&gt;
|quote= &lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====必填参数（&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;否则会报错&amp;lt;/span&amp;gt;）====&lt;br /&gt;
*&#039;&#039;&#039;url&#039;&#039;&#039;: 引用项的网址。开头必须带有通讯协议 例如&amp;lt;nowiki&amp;gt;http://或https://&amp;lt;/nowiki&amp;gt;。&lt;br /&gt;
*&#039;&#039;&#039;title&#039;&#039;&#039;: 引用项的标题（原文）。&lt;br /&gt;
** &#039;&#039;&#039;script-title&#039;&#039;&#039;：外语文献（特别是可能错误简繁转换的日文）建议使用该参数代替，开头需用&amp;lt;code&amp;gt;ja:&amp;lt;/code&amp;gt;等形式标示语言。&lt;br /&gt;
*{{fact|1=&#039;&#039;&#039;accessdate&#039;&#039;&#039;: 可使用[[ISO 8601]]中规定的YYYY-MM-DD格式，例如&amp;quot;accessdate= {{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}&amp;quot;}}。&lt;br /&gt;
&lt;br /&gt;
====选填参数====&lt;br /&gt;
*&#039;&#039;&#039;trans_title&#039;&#039;&#039;：標題的中文翻譯&lt;br /&gt;
*&#039;&#039;&#039;author&#039;&#039;&#039;: 作者的名字&lt;br /&gt;
**&#039;&#039;&#039;last&#039;&#039;&#039; 与 &#039;&#039;&#039;first&#039;&#039;&#039; 参数一起使用产生效果如&amp;lt;code&amp;gt;姓, 名. &amp;lt;/code&amp;gt;（主要用于外国人名名字在前，姓氏在后的情况）。&lt;br /&gt;
**&#039;&#039;&#039;authorlink&#039;&#039;&#039;参数与&#039;&#039;&#039;author&#039;&#039;&#039;一同使用，如果是与&#039;&#039;&#039;last&#039;&#039;&#039;参数和&#039;&#039;&#039;first&#039;&#039;&#039;参数一同使用则在两个作者之间加上&#039;&#039;&#039;|&#039;&#039;&#039;。这个参数的作用是链接到相应的维基条目，而不是链到外部链接。&lt;br /&gt;
**&#039;&#039;&#039;coauthors&#039;&#039;&#039;: 在此处可以添加另外的共同作者。&lt;br /&gt;
*&#039;&#039;&#039;date&#039;&#039;&#039;: 原文出版或发表的日期，请使用包括年、月、日的完整日期格式并与所写条目风格保持一致。如果是与使用[[ISO 8601]]中规定的YYYY-MM-DD格式时，例如是&#039;&#039;2006-02-17&#039;&#039;，&amp;lt;s&amp;gt;则不需要在输入日期时加上维基链接，它会自动被系统加上&amp;lt;/s&amp;gt;&amp;lt;small&amp;gt;（根据2014年[[WP:格式手册]]的&#039;&#039;&#039;新规定&#039;&#039;&#039;，不再对日期添加链接，原有的“[[2015年]][[10月21日]]”等内文链接也逐步被[[User:Yinweichen-bot]]等人移除）&amp;lt;/small&amp;gt;。&lt;br /&gt;
**或者使用另一种组合: &#039;&#039;&#039;year&#039;&#039;&#039;: 出版年份和&#039;&#039;&#039;month&#039;&#039;&#039;: 出版月份。如果你有详细的日子，请使用&#039;&#039;date&#039;&#039;参数。&amp;lt;s&amp;gt;这种方式也不需要加上维基链接，它会自动被系统加上&amp;lt;/s&amp;gt;&amp;lt;small&amp;gt;（根据2014年[[WP:格式手册]]的&#039;&#039;&#039;新规定&#039;&#039;&#039;，不再对日期添加链接）&amp;lt;/small&amp;gt;。&lt;br /&gt;
*&#039;&#039;&#039;format&#039;&#039;&#039;: 文件格式，例如PDF文件。此项为空则被缺省认为是HTML格式。&lt;br /&gt;
*&#039;&#039;&#039;work&#039;&#039;&#039;: 如果这个引用项是包括在一个更大「作品」之中，例如是一本书、一份期刊杂志或是一个网站，那么请写下这个&amp;quot;作品&amp;quot;的名字。&lt;br /&gt;
*&#039;&#039;&#039;publisher&#039;&#039;&#039;: 如果存在出版者--例如这个网站是由某个政府服务部门、教育机构或公司来提供运作，则可以在此输入名字。&lt;br /&gt;
*&#039;&#039;&#039;pages&#039;&#039;&#039;: &#039;&#039;pp. 5–7&#039;&#039;: 引用项所在的页数或者是所在的起始页和终止页，而不是在此写明所引用书籍的总页数。此项在引用项为PDF文件时特别有用。&amp;lt;!-- COmmentedout:notimplemented in the template!  This is especially useful for [[PDF]] format, where the page can be linked to with the &amp;lt;code&amp;gt;#page=&#039;&#039;number&#039;&#039;&amp;lt;/code&amp;gt; anchor tagged on the end of the URL:&lt;br /&gt;
*:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pages = [http://www.example.org/file.pdf#page=123 p. 123]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;--&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;language&#039;&#039;&#039;: 引用项使用的语言(为中文时作为缺省情况可以不用提示)。&lt;br /&gt;
* &#039;&#039;&#039;doi&#039;&#039;&#039;: 有关文档的[[DOI|数位物件识别号]]，例如&#039;&#039;&amp;lt;nowiki&amp;gt;10.1038/news070508-7&amp;lt;/nowiki&amp;gt;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;Doilabel&#039;&#039;&#039;: 如果此DOI包括一些必须要进行[[:en:Percent-encoding|URL编码]]的字符，请使用&amp;quot;Doilabel}}&amp;quot;参数表明为进行URL编码的版本。参见{{tl|doi}}: &amp;quot;id&amp;quot;等同于&amp;quot;doi&amp;quot;而&amp;quot;label&amp;quot;等同于&amp;quot;doilabel&amp;quot;&lt;br /&gt;
*&#039;&#039;&#039;archiveurl&#039;&#039;&#039;: 重要的网页可以被类似[[:en:WebCite|WebCite]]这样的网站[[:en:Web archiving|存档]]，这时候这个参数应该是这个存档副本的网页网址（需要同时使用&#039;&#039;&#039;archivedate&#039;&#039;&#039;参数）。&lt;br /&gt;
*&#039;&#039;&#039;archivedate&#039;&#039;&#039;: 此文档存档的日期（需要同时使用&#039;&#039;&#039;archiveurl&#039;&#039;&#039;参数），请使用[[ISO 8601]]YYYY-MM-DD格式，例如&#039;&#039;2006-02-17&#039;&#039;。&amp;lt;s&amp;gt;不需要在输入日期时加上维基链接，它会自动被系统加上。这个参数不支持（美国/国际）日期格式的日期格式（它们会被显示成错误的红色链接格式）&amp;lt;/s&amp;gt;&amp;lt;small&amp;gt;（根据2014年[[WP:格式手册]]的&#039;&#039;&#039;新规定&#039;&#039;&#039;，不再对日期添加链接）&amp;lt;/small&amp;gt;。&lt;br /&gt;
*&#039;&#039;&#039;quote&#039;&#039;&#039;: 被引用的相关原文。&lt;br /&gt;
*&#039;&#039;&#039;website&#039;&#039;&#039;: 被引用的相关网站，可以用内链。&lt;br /&gt;
&lt;br /&gt;
==举例说明==&lt;br /&gt;
;一些常见用法&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|author=Doe, John&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|publisher=Open Publishing&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|author=Doe, John&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|publisher=Open Publishing&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|author=Doe, John&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|author=Doe, John&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|author=Doe, John&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|author=Doe, John&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|author=Doe, John&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|author=Doe, John&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|url=http://www.nfl.com/fans/&lt;br /&gt;
|title=Digest of rules&lt;br /&gt;
|publisher= National Football League&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|url=http://www.nfl.com/fans/&lt;br /&gt;
|title=Digest of rules&lt;br /&gt;
|publisher= National Football League&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
;使用format参数&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web &lt;br /&gt;
|title=List of psychotropic substances under international control&lt;br /&gt;
|publisher=International Narcotics Control Board&lt;br /&gt;
|url=http://www.incb.org/pdf/e/list/green.pdf&lt;br /&gt;
|format=PDF&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt; → &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web &lt;br /&gt;
|title=List of psychotropic substances under international control&lt;br /&gt;
|publisher=International Narcotics Control Board&lt;br /&gt;
|url=http://www.incb.org/pdf/e/list/green.pdf&lt;br /&gt;
|format=PDF&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
;使用language参数&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|author=Joliet, François&lt;br /&gt;
|title=Honnit soit qui mal y pense&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
|language= Fr&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|author=Joliet, François&lt;br /&gt;
|title=Honnit soit qui mal y pense&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
|language= Fr&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
;使用coauthors参数&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|first=John&lt;br /&gt;
|last=Doe&lt;br /&gt;
|coauthors=Smith, Peter; Smythe, Jim&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|publisher=Open Publishing&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2006-05-16 &lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|first=John&lt;br /&gt;
|last=Doe&lt;br /&gt;
|coauthors=Smith, Peter; Smythe, Jim&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|publisher=Open Publishing&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2006-05-16 &lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
;使用authorlink参数&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|url= http://www.ceo.gov.hk/chi/press/oped.htm&lt;br /&gt;
|title= 「大市場 小政府」── 我們恪守的經濟原則&lt;br /&gt;
|accessdate= 2008-08-08&lt;br /&gt;
|author= 曾蔭權&lt;br /&gt;
|authorlink= 曾蔭權&lt;br /&gt;
|date= 2006-9-18&lt;br /&gt;
|work= 香港特別行政區行政長官網頁&lt;br /&gt;
|publisher= 香港特別行政區政府新聞處&lt;br /&gt;
|language= zh-hant&lt;br /&gt;
|quote= 對於私營界別可以自己做的事，政府不應對市場作任何干預&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|url= http://www.ceo.gov.hk/chi/press/oped.htm&lt;br /&gt;
|title= 「大市場 小政府」── 我們恪守的經濟原則&lt;br /&gt;
|accessdate= 2008-08-08&lt;br /&gt;
|author= 曾蔭權&lt;br /&gt;
|authorlink= 曾蔭權&lt;br /&gt;
|date= 2006-09-18&lt;br /&gt;
|work= 香港特別行政區行政長官網頁&lt;br /&gt;
|publisher= 香港特別行政區政府新聞處&lt;br /&gt;
|language= zh-hant&lt;br /&gt;
|quote= 對於私營界別可以自己做的事，政府不應對市場作任何干預&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
;不使用author参数&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|publisher=Open Publishing&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/ | accessdate=2006-05-16 &lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|publisher=Open Publishing&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/ | accessdate=2006-05-16 &lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
;不使用author和publisher参数&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;/br&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web &lt;br /&gt;
|title=List of psychotropic substances under international control&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|url=http://www.incb.org/pdf/e/list/green.pdf&lt;br /&gt;
|format=PDF&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
|language= el &lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt; → &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web &lt;br /&gt;
|title=List of psychotropic substances under international control&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|url=http://www.incb.org/pdf/e/list/green.pdf&lt;br /&gt;
|format=PDF&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
|language= el &lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
;为已被类似[[:en:WebCite|WebCite]]这样的网站存档的网页使用参数archiveurl和archivedate&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|title=List of psychotropic substances under international control&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|url=http://www.incb.org/pdf/e/list/green.pdf&lt;br /&gt;
|format=PDF&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
|archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf&lt;br /&gt;
|archivedate=2005-09-11&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt; → &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|title=List of psychotropic substances under international control&lt;br /&gt;
|date=2005-04-30&lt;br /&gt;
|url=http://www.incb.org/pdf/e/list/green.pdf&lt;br /&gt;
|format=PDF&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
|archiveurl=http://www.archive.org/2005-09-11/www.incb.org/pdf/e/list/green.pdf&lt;br /&gt;
|archivedate=2005-09-11&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&amp;amp;story=20060405-01shore.htm&lt;br /&gt;
|title=Interview with Maggie Downs&lt;br /&gt;
|date=2006-03-31&lt;br /&gt;
|publisher=The Desert Sun&lt;br /&gt;
|archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm&lt;br /&gt;
|archivedate=2006-04-26&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt; → &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|url=http://joanjettbadrep.com/cgi-bin/fullStory.cgi?archive=currnews&amp;amp;story=20060405-01shore.htm&lt;br /&gt;
|title=Interview with Maggie Downs&lt;br /&gt;
|date=2006-03-31&lt;br /&gt;
|publisher=The Desert Sun&lt;br /&gt;
|archiveurl=http://72.14.207.104/search?q=cache:JAxf4v-pQmgJ:joanjettbadrep.com/cgi-bin/fullStory.cgi%3Farchive%3Dcurrnews%26story%3D20060405-01shore.htm&lt;br /&gt;
|archivedate=2006-04-26&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
;使用quote参数&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
|quote=Lorem ipsum dolor.&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|title=My favorite things part II&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
|quote=Lorem ipsum dolor.&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
;因title参数忘记填写而导致的错误&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;{{Cite web&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
|quote=Lorem ipsum dolor.&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;→ &amp;lt;span style=&amp;quot;background:white&amp;quot;&amp;gt;{{Cite web&lt;br /&gt;
|work=Encyclopedia of things&lt;br /&gt;
|url=http://www.example.org/&lt;br /&gt;
|accessdate=2005-07-06&lt;br /&gt;
|quote=Lorem ipsum dolor.&lt;br /&gt;
}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==注意事項==&lt;br /&gt;
某些外文標點符號（-{“　”　‘　’}-）在「繁體」模式時會錯誤轉換為引號，例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{Cite web |url=https://zh.wikipedia.org |title=“Title text”}}&amp;lt;/nowiki&amp;gt; 顯示為：&lt;br /&gt;
&lt;br /&gt;
{{Cite web |url=https://zh.wikipedia.org |title=“Title text”}}&lt;br /&gt;
&lt;br /&gt;
使用script-title參數可強制該等標點不轉換：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{Cite web |url=https://zh.wikipedia.org |script-title=en:“Title text”}}&amp;lt;/nowiki&amp;gt;顯示為&lt;br /&gt;
&lt;br /&gt;
{{Cite web |url=https://zh.wikipedia.org |script-title=en:“Title text”}}&lt;br /&gt;
&lt;br /&gt;
雖然使用&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;“Title text”&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;也可強制不轉換，但是會出現「存在delete character」紅字錯誤訊息（2016年情況），例如：&lt;br /&gt;
&lt;br /&gt;
{{Cite web |url=https://zh.wikipedia.org |title=&amp;lt;nowiki&amp;gt;“Title text”&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
如在location和quote參數填入的文字有該等標點，使用&amp;lt;nowiki&amp;gt;-{... }-&amp;lt;/nowiki&amp;gt;即可強制該等標點不轉換。&lt;br /&gt;
&lt;br /&gt;
如果網頁標題含有以下字符，請在填寫title參數時依下表替換。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! 網頁標題原有字符 !! 替換為&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt; | &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;amp;amp;#124;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 align=left | 以下為以往引致錯誤的字符，已於2016年修復問題，&amp;lt;br/&amp;gt;可直接於title填「|title=[文字...] 文字...」，繼續依下表轉換亦可&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;amp;amp;#91;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;amp;amp;#93;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
加入&amp;lt;code&amp;gt;language=en&amp;lt;/code&amp;gt;（或ja、es之類）關閉轉換的方法於2015年12月以後失效。&lt;br /&gt;
&lt;br /&gt;
==參見==&lt;br /&gt;
* [[Wikipedia:列明来源]]：格式指引&lt;br /&gt;
* [[Wikipedia:模板消息/条目来源]]：相關模板&lt;br /&gt;
* [[Template:Cite news]]：引用來源為新聞時&lt;br /&gt;
* [[Template:Cite book]]：引用來源為書籍時&lt;br /&gt;
* [[Template:Cite journal]]：引用來源為期刊時&lt;br /&gt;
* [[Help:引文格式1错误]]：因為填寫參數有問題而產生紅字提示的解答指南&lt;br /&gt;
* [[:Template:Citation Style documentation/deprecated]]：如果在Cite web模板內使用某些「舊」參數，條目會被自動加入「[[:Category:Pages containing cite templates with deprecated parameters]]」，改用建議的參數名稱後就不會被加入該分類。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
[[Category:頁面訊息模板|{{PAGENAME}}]]&lt;br /&gt;
[[Category:引用模板]]&lt;br /&gt;
&lt;br /&gt;
[[af:Sjabloon:Webaanhaling]]&lt;br /&gt;
[[bg:Шаблон:Цитат уеб]]&lt;br /&gt;
[[cs:Šablona:Citace webu]]&lt;br /&gt;
[[da:Skabelon:Kilde www]]&lt;br /&gt;
[[de:Vorlage:Cite web]]&lt;br /&gt;
[[en:Template:Cite web]]&lt;br /&gt;
[[el:Πρότυπο:Cite web]]&lt;br /&gt;
[[eo:Ŝablono:Citaĵo el la reto]]&lt;br /&gt;
[[es:Plantilla:Cita web]]&lt;br /&gt;
[[fr:Modèle:Lien web]]&lt;br /&gt;
[[hr:Predložak:Cite web]]&lt;br /&gt;
[[ia:Patrono:Cite web]]&lt;br /&gt;
[[it:Template:Cita web]]&lt;br /&gt;
[[ja:Template:Cite web]]&lt;br /&gt;
[[ko:틀:웹 인용]]&lt;br /&gt;
[[ms:Templat:Cite web]]&lt;br /&gt;
[[nl:Sjabloon:Voetnoot web]]&lt;br /&gt;
[[no:Mal:Kilde www]]&lt;br /&gt;
[[pl:Szablon:Cytuj stronę]]&lt;br /&gt;
[[pt:Predefinição:Citar web]]&lt;br /&gt;
[[ro:Format:Citat web]]&lt;br /&gt;
[[ru:Шаблон:Cite web]]&lt;br /&gt;
[[sk:Šablóna:Cite web]]&lt;br /&gt;
[[sl:Predloga:Navedi splet]]&lt;br /&gt;
[[sv:Mall:Webbref]]&lt;br /&gt;
[[fi:Malline:Verkkoviite]]&lt;br /&gt;
[[vi:Tiêu bản:Chú thích web]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:Cite_web&amp;diff=7436</id>
		<title>Template:Cite web</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:Cite_web&amp;diff=7436"/>
		<updated>2016-06-10T12:06:32Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​导入1个版本：Template:Cite web&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{pp-template|small=yes}}&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#invoke:citation/CS1|citation&lt;br /&gt;
|CitationClass=web&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:Cite_web&amp;diff=7434</id>
		<title>Template:Cite web</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:Cite_web&amp;diff=7434"/>
		<updated>2016-06-10T08:29:48Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​创建页面，内容为“&amp;lt;noinclude&amp;gt;{{pp-template|small=yes}}&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#invoke:citation/CS1|citation |CitationClass=web }}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; {{documentation}} &amp;lt;/noinc...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{pp-template|small=yes}}&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#invoke:citation/CS1|citation&lt;br /&gt;
|CitationClass=web&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:Reflist&amp;diff=7433</id>
		<title>Template:Reflist</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:Reflist&amp;diff=7433"/>
		<updated>2016-06-10T03:13:21Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​创建页面，内容为“&amp;lt;div class=&amp;quot;reflist &amp;lt;!--  --&amp;gt;{{#if: {{{1|}}}     | columns {{#iferror: {{#ifexpr: {{{1|1}}} &amp;gt; 1 }}       | references-column-width        | references-column-count r...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;reflist &amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{#if: {{{1|}}}&lt;br /&gt;
    | columns {{#iferror: {{#ifexpr: {{{1|1}}} &amp;gt; 1 }}&lt;br /&gt;
      | references-column-width &lt;br /&gt;
      | references-column-count references-column-count-{{#if:1|{{{1}}}}} }}&lt;br /&gt;
    | {{#if: {{{colwidth|}}}&lt;br /&gt;
      | references-column-width }} }}&amp;quot; style=&amp;quot;&amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{#if: {{{1|}}}&lt;br /&gt;
    | {{#iferror: {{#ifexpr: {{{1|1}}} &amp;gt; 1 }}&lt;br /&gt;
      | {{column-width|{{#if:1|{{{1}}}}}}}&lt;br /&gt;
      | {{column-count|{{#if:1|{{{1}}}}}}} }}&lt;br /&gt;
    | {{#if: {{{colwidth|}}}&lt;br /&gt;
      | {{column-width|{{{colwidth}}}}} }} }} list-style-type: &amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{{liststyle|{{#switch: {{{group|}}}&lt;br /&gt;
    | upper-alpha&lt;br /&gt;
    | upper-roman&lt;br /&gt;
    | lower-alpha&lt;br /&gt;
    | lower-greek&lt;br /&gt;
    | lower-roman = {{{group}}}&lt;br /&gt;
    | #default = decimal}}}}};&amp;quot;&amp;gt;&lt;br /&gt;
{{{list|{{#tag:references|{{{refs|}}}|group={{{group|}}}}}}}}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-991CN_X&amp;diff=7431</id>
		<title>Fx-991CN X</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-991CN_X&amp;diff=7431"/>
		<updated>2016-06-09T04:11:52Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​copy zh.wikipedia 原作者复制&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = 卡西欧 fx-991CNX&lt;br /&gt;
| image        = &lt;br /&gt;
| caption      = &lt;br /&gt;
| type         = [[科学计算器]]&lt;br /&gt;
| entry        = &lt;br /&gt;
| invent-date  = 2014年6月24日&lt;br /&gt;
| invent-name  = [[卡西欧]]&lt;br /&gt;
| conn1        = &lt;br /&gt;
| via1_1       = &lt;br /&gt;
| designfirm   = &lt;br /&gt;
| manufacturer = &lt;br /&gt;
| introduced   = &lt;br /&gt;
| discontinued = &lt;br /&gt;
| cost         = 168元（人民币）&lt;br /&gt;
| processor    = &lt;br /&gt;
| prog_lang    = &lt;br /&gt;
| frequency    = &lt;br /&gt;
| precision    = &lt;br /&gt;
| display_type = [[Liquid crystal display]]&lt;br /&gt;
| display_size = 192×63&lt;br /&gt;
| memory_user  = &lt;br /&gt;
| memory_rom   = &lt;br /&gt;
| memory_extern= &lt;br /&gt;
| memory_data  = &lt;br /&gt;
| memory_step  =&lt;br /&gt;
| connection   = &lt;br /&gt;
| ports        = &lt;br /&gt;
| supply       = 内置[[太阳能电池]]；[[按钮电池]]LR44*1&lt;br /&gt;
| power        = &lt;br /&gt;
| weight       = 0.09 (kg)&lt;br /&gt;
| dimensions   = 77*165.5*11.1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;卡西欧 fx-991CNX&#039;&#039;&#039;是卡西欧公司在2014年6月24日发布的面向中文用户的科学函数计算器。这个型号的计算器用于取代原先的型号[[卡西歐 fx-991ES PLUS]]，并在原型号上进行改进，增加了功能，提升了屏幕分辨率，将系统界面全部变为[[简体中文]]（亦可以使用英文显示）和图形化，以方便用户使用。&lt;br /&gt;
&lt;br /&gt;
==外形==&lt;br /&gt;
卡西欧 fx-991CNX采用了与所有卡西欧CLASSWIZ系列相同的外形，其正面为[[黑色]]，机身背面和保护盖为纯[[白色]]，正面[[PS塑料]]材质面板上带有花纹。&lt;br /&gt;
&lt;br /&gt;
==电池供应==&lt;br /&gt;
使用内置[[太阳能电池]]（使用太阳能电池供电时屏幕右上角将有一个太阳状标志）和[[按钮电池]]LR44*1，&amp;lt;ref&amp;gt;在每天操作一小时情况下，电池大概寿命为两年&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==功能==&lt;br /&gt;
*卡西欧fx-991CNX拥有十个模式，分别为基本计算、[[复数]]计算、统计计算、[[基数]]运算、[[方程式]]运算、[[矩阵]]计算、通过函数生成数学表格、[[向量]]计算、不等式计算、比例式计算&lt;br /&gt;
&lt;br /&gt;
*拥有[[常数|科学常数]]和公制转换功能&lt;br /&gt;
*自然书写显示&lt;br /&gt;
&lt;br /&gt;
==自检==&lt;br /&gt;
卡西欧fx-991CNX采用了新设计的自检，由两部分组成&lt;br /&gt;
===一般自检===&lt;br /&gt;
&lt;br /&gt;
由SHIFT+7+开机再按9进入，自检顺序为屏幕检查、系统版本、按键检查、屏幕对比度调节。&lt;br /&gt;
===按键电路检测===&lt;br /&gt;
由SHIFT+7+开机再按8进入，按屏幕顺序按下按键后完成。&lt;br /&gt;
&lt;br /&gt;
==参考==&lt;br /&gt;
#卡西欧fx-991CNX用户说明书RJA530830-001V01&lt;br /&gt;
#[http://tieba.baidu.com/p/3194146137 百度贴吧fx-es(ms)吧贴【专业评测】卡西欧CLASSWIZ系列中文函数机旗舰机型fx-991CN X]&lt;br /&gt;
#http://www.casio.com.cn/cal/scientific/fx-991CN%20X/index.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Casio]]&lt;br /&gt;
[[Category:计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Fx-290&amp;diff=7430</id>
		<title>Fx-290</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Fx-290&amp;diff=7430"/>
		<updated>2016-06-09T04:10:43Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​copy zh.wikipedia 原作者复制&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
| name         = 卡西歐 fx-290&lt;br /&gt;
| image        =&lt;br /&gt;
| caption      = &lt;br /&gt;
| type         = [[科学计算器]]&lt;br /&gt;
| entry        = [[Calculator_input_methods#Mathematical_display|V.P.A.M.]]&lt;br /&gt;
| invent-date  = &lt;br /&gt;
| invent-name  = &lt;br /&gt;
| conn1        = &lt;br /&gt;
| via1_1       =&lt;br /&gt;
| designfirm   =&lt;br /&gt;
| manufacturer = &lt;br /&gt;
| introduced   =&lt;br /&gt;
| discontinued = &lt;br /&gt;
| cost         = &lt;br /&gt;
| processor    = &lt;br /&gt;
| prog_lang    = &lt;br /&gt;
| frequency    = &lt;br /&gt;
| precision    = 15位&lt;br /&gt;
| display_type = [[Liquid crystal display]]&lt;br /&gt;
| display_size = &lt;br /&gt;
| memory_user  = &lt;br /&gt;
| memory_rom   = &lt;br /&gt;
| memory_extern= &lt;br /&gt;
| memory_data  = &lt;br /&gt;
| memory_step  = &lt;br /&gt;
| connection   = &lt;br /&gt;
| ports        = &lt;br /&gt;
&lt;br /&gt;
| supply       =内置太阳能电池；按钮电池&lt;br /&gt;
&lt;br /&gt;
| power        = &lt;br /&gt;
| weight       = &lt;br /&gt;
| dimensions   = 19.5*78*155（mm）&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;卡西歐 fx-290&#039;&#039;&#039;是[[卡西欧]]公司发布的[[科学计算器|科学函数计算器]]。这个型号的计算器目前只在[[日本]]有售，其型号虽未标注为MS系列，但实则与新MS系列一致。&lt;br /&gt;
==功能==&lt;br /&gt;
卡西歐 fx-290的功能在卡西欧的科学计算器中不算多，但亦也不少。其拥有COMP、SD、REG三个模式运算（SD、REG是在MS型号被拆分的统计运算），有conversation（单位换算），但较旗舰机型[[卡西欧 fx-991MS]]缺少了CONSTANT（科学常数）功能。但卡西歐 fx-290拥有RanInt功能，是[[卡西欧 fx-991MS]]不具备的。因为卡西歐 fx-290是新MS系列，故拥有屏幕对比度调节与关机画面功能。&lt;br /&gt;
==自检==&lt;br /&gt;
由SHIFT+7+ON进入，自检顺序为屏幕检查、系统版本、按键检查、屏幕对比度调节。&lt;br /&gt;
==参考==&lt;br /&gt;
#卡西欧 fx-991MS用户说明书（日语）&lt;br /&gt;
#[http://tieba.baidu.com/p/3840847643 【测评】fx-290 &amp;amp; fx-991MS PLUS 多图详细测评]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Casio]]&lt;br /&gt;
[[Category:计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=TI-86&amp;diff=7429</id>
		<title>TI-86</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=TI-86&amp;diff=7429"/>
		<updated>2016-06-09T04:05:44Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​copy zh.wikipedia 原作者复制&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
|name = TI-86&lt;br /&gt;
|image = TI-86 calculator.jpg&lt;br /&gt;
|caption = 一台TI-86计算器&lt;br /&gt;
|type = [[图形计算器]]&lt;br /&gt;
| entry        =[[Calculator_input_methods#Infix_notation|D.A.L.]]&lt;br /&gt;
|manufacturer = [[德州仪器]]&lt;br /&gt;
|introduced = 1997&lt;br /&gt;
|discontinued = 2004&lt;br /&gt;
|predecessor = [[TI-85]]&lt;br /&gt;
|successor = &lt;br /&gt;
|processor = [[Zilog Z80]]&lt;br /&gt;
| frequency  = 6 MHz   &lt;br /&gt;
|memory_user =96 kB of [[random access memory|RAM]]&lt;br /&gt;
|display_size = 128×64 pixels, 21×8 characters &lt;br /&gt;
|precision = &lt;br /&gt;
|link = &lt;br /&gt;
|prog_lang = &lt;br /&gt;
|supply = 4 [[AAA battery|AAA]]&#039;s,&amp;lt;br&amp;gt;1 CR1616 or CR1620&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI-86&#039;&#039;&#039;是一款由[[德州仪器]]于[[1997年]]发行的[[图形计算器]]。 TI-86使用和[[TI-85]]相同的[[Zilog Z80]] [[microprocessor]]处理器。&lt;br /&gt;
&lt;br /&gt;
TI-86具有比[[TI-83]]更大的屏幕，TI-86还允许用户使用小写字母和[[希腊字母]]键入，并设有五个功能键，这提高了导航菜单的方便性，如[[十进制]]到分数转换中的操作。该计算器还可以比TI-83更好的处理[[向量]]，[[矩阵]]和[[复数]]等功能。但是其有一个缺点，[[TI-83]]的统计数据包范围并不都预装在TI-86，然而，它可以从德州仪器程序存档网站下载并使用连接电缆的安装在计算器中。&lt;br /&gt;
&amp;lt;ref&amp;gt;[ftp://ftp.ti.com/pub/graph-ti/calc-apps/86/asm/ti-apps/]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TI-86现已停产。&amp;lt;ref&amp;gt;{{cite web |url=http://education.ti.com/educationportal/sites/US/productDetail/us_ti86.html |title=TI-86 Features Summary |archiveurl=https://web.archive.org/web/20081118153512/http://education.ti.com/educationportal/sites/US/productDetail/us_ti86.html |archivedate=November 18, 2008}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==技术特征==&lt;br /&gt;
*&#039;&#039;&#039;[[CPU]]:&#039;&#039;&#039; [[Zilog Z80]]&amp;lt;ref&amp;gt;{{cite web|url=http://www.math.umbc.edu/~campbell/Calculators/TI8x/|last=Campbell|first=Robert|title=TI-82/83/85/86 Mathematics Use|year=2001|publisher=UMBC}}&amp;lt;/ref&amp;gt; 6&amp;amp;nbsp;[[MHz]]&lt;br /&gt;
*&#039;&#039;&#039;[[RAM]]:&#039;&#039;&#039; 128 [[KB]], 96 KB 用户可用&lt;br /&gt;
*&#039;&#039;&#039;[[ROM]]:&#039;&#039;&#039; 256 KB 不可升级&lt;br /&gt;
*&#039;&#039;&#039;[[屏幕]]:&#039;&#039;&#039; 128×64 [[像素]] [[LCD]]&lt;br /&gt;
*&#039;&#039;&#039;[[编程语言]]:&#039;&#039;&#039; [[TI BASIC (calculator)|TI-BASIC]], [[Zilog_Z80#Z80_assembly_language|Z80 Assembly language]] (ASM)&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
* [[TI图形计算器对比]]&lt;br /&gt;
&lt;br /&gt;
==脚注==&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
*[http://web.archive.org/web/20080727031611/http://education.ti.com/educationportal/sites/US/productDetail/us_ti86.html Official Texas Instruments TI-86 page (Internet Archive)]&lt;br /&gt;
*[http://www.ticalc.org/pub/86/ ticalc.org] hosts a large collection of downloadable freeware programs for the TI-86 can be found at along with [http://www.ticalc.org/basics/calculators/ti-86.html programming tutorials and hardware extensions]&lt;br /&gt;
*[http://calcg.org/ CalcG.org] - Very organized and large archive of games and programs.&lt;br /&gt;
*[http://guide.ticalc.org The Guide] - the largest set of tutorials for TI-86 assembly programming&lt;br /&gt;
*[ftp://ftp.ti.com/pub/graph-ti/calc-apps/86/asm/ti-apps/ Texas Instruments Program Archive]&lt;br /&gt;
*[http://www.takeitapart.net/archives/ti-83-and-86/ Complete Disassembly of a TI-86]&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;br /&gt;
[[Category:德州仪器计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=TI-85&amp;diff=7428</id>
		<title>TI-85</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=TI-85&amp;diff=7428"/>
		<updated>2016-06-09T04:04:13Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​copy zh.wikipedia 原作者复制&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
|name = TI-85&lt;br /&gt;
|image = TI85 graphing calculator.jpg&lt;br /&gt;
|caption = 一台TI-85计算器&lt;br /&gt;
|type = [[图形计算器]]&lt;br /&gt;
| entry        =[[Calculator_input_methods#Mathematical_display|D.A.L.]]&lt;br /&gt;
|manufacturer = [[德州仪器]]&lt;br /&gt;
|introduced = 1992&lt;br /&gt;
|discontinued = 1997&lt;br /&gt;
|predecessor = &lt;br /&gt;
|successor = [[TI-86]]&lt;br /&gt;
|processor = [[Zilog Z80]]&lt;br /&gt;
| frequency  = 6 [[MHz]]   &lt;br /&gt;
|memory_user = 28 kB of [[random access memory|RAM]]&lt;br /&gt;
|display_size = 128×64 像素, 21×8 字符&lt;br /&gt;
|precision = &lt;br /&gt;
|link = &lt;br /&gt;
|prog_lang = &lt;br /&gt;
|supply = 4 [[AAA battery|AAA]]&#039;s,&amp;lt;br&amp;gt;1 CR1616 or CR1620&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI-85&#039;&#039;&#039;是一款由[[德州仪器]]于[[1992年]]发行的第二款[[图形计算器]]（第一为{{Link-en|TI-81|TI-81|TI-81}})，其使用了和下一代[[TI-86]]相同的[[Zilog Z80]] [[微处理器]]。 &lt;br /&gt;
&lt;br /&gt;
TI-85被设计用于工程领域，并允许通过连接端口连接至[[电脑]]以传输数据。&lt;br /&gt;
&lt;br /&gt;
目前TI-85已停产。&lt;br /&gt;
&lt;br /&gt;
==技术信息==&lt;br /&gt;
*&#039;&#039;&#039;[[处理器|CPU]]:&#039;&#039;&#039; [[Zilog Z80]] CPU,&amp;lt;ref&amp;gt;{{cite web|url=http://www.math.umbc.edu/~campbell/Calculators/TI8x/|last=Campbell|first=Robert|title=TI-82/83/85/86 Mathematics Use|year=2001|publisher=UMBC}}&amp;lt;/ref&amp;gt; 6 [[Megahertz|MHz]]&lt;br /&gt;
*&#039;&#039;&#039;[[RAM]]:&#039;&#039;&#039; 32 [[Kilobyte|KB]], (28 KB 使用者可用)&lt;br /&gt;
*&#039;&#039;&#039;[[ROM]]:&#039;&#039;&#039; 128 KB 不可升级&lt;br /&gt;
*&#039;&#039;&#039;[[屏幕]]&#039;&#039;&#039;&lt;br /&gt;
**文字: 21×8 字符&lt;br /&gt;
**图形: 128×64 像素&lt;br /&gt;
*&#039;&#039;&#039;连接端口:&#039;&#039;&#039; 2.5 mm I/O port&lt;br /&gt;
*&#039;&#039;&#039;[[电源]]:&#039;&#039;&#039; 4×[[AAA battery|AAA]], 1×CR1616 or CR1620&lt;br /&gt;
*&#039;&#039;&#039;[[编程语言]]:&#039;&#039;&#039; [[TI-BASIC]], Z80 [[Assembly language|Assembly]]&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
* [[TI图形计算器对比]]&lt;br /&gt;
&lt;br /&gt;
==脚注==&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
*[http://education.ti.com/guidebooks/graphing/85/85book-eng.pdf TI-85 Guidebook] (PDF)&lt;br /&gt;
*[http://www.ticalc.org ticalc.org] – The largest archive of TI programs available.&lt;br /&gt;
*[http://calcg.org/ CalcG.org] - Very organized and large archive of games and programs.&lt;br /&gt;
*[http://www.youtube.com/watch?v=5GWMN0x8Ijg TI-85 Graphical Demo] - An interesting graphical demo programmed for a TI-85.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;br /&gt;
[[Category:德州仪器计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=TI-80&amp;diff=7427</id>
		<title>TI-80</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=TI-80&amp;diff=7427"/>
		<updated>2016-06-09T04:01:31Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​copy zh.wikipedia 原作者复制&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox calculator&lt;br /&gt;
|name = TI-80&lt;br /&gt;
|image = TI-80.png&lt;br /&gt;
|caption = 一只TI-80正在显示“wikipedia”字样&lt;br /&gt;
|type = [[图形计算器]]&lt;br /&gt;
| entry        =[[Calculator_input_methods#Mathematical_display|D.A.L.]]&lt;br /&gt;
|manufacturer = [[德州仪器]]&lt;br /&gt;
|introduced = 1995&lt;br /&gt;
|discontinued = 1998&lt;br /&gt;
|successor = [[TI-73 series]]&lt;br /&gt;
|processor =  Proprietary (on board a Toshiba T6M53A ASIC)&lt;br /&gt;
| frequency    = 980 kHz&lt;br /&gt;
|memory_user = 7 KB of [[random access memory|RAM]]&lt;br /&gt;
|display_size = 64×48 pixels, 16×8 characters&lt;br /&gt;
|precision = 13&lt;br /&gt;
|link = N/A&lt;br /&gt;
|prog_lang = &lt;br /&gt;
|supply = 2 CR2032 batteries&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TI-80&#039;&#039;&#039;是一款由[[德州仪器]]发行的[[图形计算器]]。其被设计用于帮助6-8年级[[中学]]的教学工作。&lt;br /&gt;
&lt;br /&gt;
在所有德州仪器发行的图形计算器中，TI-80拥有最慢的[[处理器]]和最小的[[屏幕]]。此为，TI-80的处理器[[东芝]]T6M53A ASIC异于[[TI-83]]，[[TI-83|TI-83 plus]]和[[TI-84 Plus]]等型号，其没有独立的专用[[集成电路]]。但是，由于特殊定位，TI-80拥有较TI-81更多的内置[[函数]]与功能（如列表和表格功能，以及分数和小数转换等）。TI-80并没有连接端口，但其是唯一的图形计算器使用2*CR2032纽扣[[锂电池]]的特例。（而不是标准的4节AAA电池与锂备用电池）。&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
* [[TI图形计算器对比]]&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
* [http://www.datamath.org/Graphing/TI-80.htm DataMath] - DataMath Calculator Museum on the TI-80&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;br /&gt;
[[Category:德州仪器计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=CFX-9850%E5%9B%BE%E5%BD%A2%E7%BC%96%E7%A8%8B%E8%AE%A1%E7%AE%97%E5%99%A8&amp;diff=7426</id>
		<title>CFX-9850图形编程计算器</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=CFX-9850%E5%9B%BE%E5%BD%A2%E7%BC%96%E7%A8%8B%E8%AE%A1%E7%AE%97%E5%99%A8&amp;diff=7426"/>
		<updated>2016-06-09T03:57:31Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​copy zh.wikipedia 原作者复制&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Infobox calculator&lt;br /&gt;
| name         = 卡西欧9850计算器系列&lt;br /&gt;
| image        = &lt;br /&gt;
| caption      = &lt;br /&gt;
| type         = [[图形计算器|绘图]] [[编程计算器|编程]]&lt;br /&gt;
| entry        =[[Calculator_input_methods#Infix_notation|Infix]]&lt;br /&gt;
| introduced   = 1996&lt;br /&gt;
| discontinued = 2008&lt;br /&gt;
| manufacturer = [[Casio]]&lt;br /&gt;
| precision    = &lt;br /&gt;
| display_type = [[液晶显示器|LCD]] [[点阵显示屏]]&lt;br /&gt;
| display_size = 128×64 &lt;br /&gt;
| prog_lang    = 类[[BASIC]]&lt;br /&gt;
| memory_user  = &lt;br /&gt;
| memory_data  = 视机型而定&lt;br /&gt;
| memory_step  = &lt;br /&gt;
| supply       =4节[[AAA电池|AAA]]型电池&lt;br /&gt;
| weight       = 190 克&lt;br /&gt;
| dimensions   = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;卡西欧9850图形编程计算器系列&#039;&#039;&#039;在1999年至2008年间生产，这个系列是FX-9750G系列的高阶版本，大部分机型拥有光学[[液晶彩色显示屏]]（能显示[[橙色]]，[[绿色]]和[[蓝色]]）。&lt;br /&gt;
==机型==&lt;br /&gt;
===CFX-9850G===&lt;br /&gt;
CFX-9850G于1996年发布，是卡西欧9850计算器系列的第一款产品，让人引人注目的是它带有一个与[[卡西欧 CFX-9800G]]类似的彩色液晶显示屏（这种屏幕的实质是灰阶显示器，通过特殊的光学滤片使其看起来像是彩色的）。和9850G相同的机型是9930GT&amp;lt;ref name=&amp;quot;auto&amp;quot;&amp;gt;{{cite web|url=http://www.spiderpixel.co.uk/caspro/subhtml/modelsef.html|title=CASIO GRAPHIC CALCULATOR MODEL NUMBERS EQUIVALENCE|publisher=}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850G拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;&amp;gt;{{cite web|url=http://www.spiderpixel.co.uk/caspro/subhtml/history.html|title=history of casio graphic calculators|publisher=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB || 否|| 否 || 否&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850G Plus===&lt;br /&gt;
CFX-9850G Plus最早于1997年发布，当时的机身颜色为黑色，较CFX-9850G增加了金融功能，同时带有了[[Autodim]]。在2004年，白色版本的CFX-9850G Plus被发布，值得注意的是这个型号将内存扩大至64KB。与CFX-9850G Plus相同的机型是9940GT。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850G Plus（&#039;&#039;&#039;黑色版本&#039;&#039;&#039;）拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB ||是|| 否|| 是&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850G Plus（&#039;&#039;&#039;白色版本&#039;&#039;&#039;）拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 64KB ||是|| 否|| 是&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850Ga Plus===&lt;br /&gt;
CFX-9850Ga Plus于1997年发布，拥有的功能和CFX-9850G Plus黑色版本相同。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850Ga Plus拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB || 是|| 否||是&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850Gb Plus===&lt;br /&gt;
CFX-9850Gb Plus最早于1998年被发布，和CFX-9850G Plus类似，早期只有黑色机身版本，而后于2002年发布了白色机身的版本，但是并没有改进功能。有趣的是，CFX-9850Gb Plus内建了一个程序库，使用者可以将这些程序导入至编程功能中使用。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850Gb Plus拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB ||是|| 是|| 是&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850Gc Plus===&lt;br /&gt;
CFX-9850Gc Plus与2004年发布，是9850系列的最后一款机型，它相较于前代产品的区别仅仅是拥有64KB内存。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850Gc Plus拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 64KB || 是|| 否|| 是&lt;br /&gt;
|}&lt;br /&gt;
==系列参数==&lt;br /&gt;
===电源===&lt;br /&gt;
卡西欧9850计算器系列使用四节[[AAA电池|AAA]]型电池和一枚CR2032纽扣电池，其中纽扣电池用来保持数据备份。系列所有型号功耗皆为0.06W&amp;lt;ref&amp;gt;计算器背壳上注明：0.06W&amp;lt;/ref&amp;gt;&lt;br /&gt;
===连接===&lt;br /&gt;
&lt;br /&gt;
卡西欧9850计算器系列没有[[USB接口]]，其使用随机附送的卡西欧SB-62双机互连线沟通，可以互相导入数据与程序。通过这个接口，可以与德州仪器EA-100系列数据采集器系列相连接，采集类似于[[光照强度]]、[[温度]]、[[力]]、[[电压]]、[[PH值]]等数据并快速作图，亦可以和卡西欧标签打印机连接。&lt;br /&gt;
===CPU===&lt;br /&gt;
卡西欧9850计算器系列使用了来自[[日立]]为卡西欧定制的HCD62121处理器（测量方法使用了[[BogoMips]]，得分是0.000027，从而推测）。&lt;br /&gt;
&lt;br /&gt;
==图库==&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
*[http://www.cncalc.org/forum.php?mod=viewthread&amp;amp;tid=9636&amp;amp;highlight=cfx cfx-9850Gb评测-cncalc论坛]&lt;br /&gt;
*[http://support.casio.com/cn/manual/manuallist.php?cid=004 CASIO WORLDWIDE-支持-说明书-中文]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:计算器]]&lt;br /&gt;
[[Category:图形计算器]]&lt;br /&gt;
[[Category:可编程计算器]]&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=7332</id>
		<title>计算器百科:聊天室</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=7332"/>
		<updated>2016-06-02T12:55:20Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​/* 方案一 */ // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=User:Nbfreeh&amp;diff=7044</id>
		<title>User:Nbfreeh</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=User:Nbfreeh&amp;diff=7044"/>
		<updated>2016-05-22T10:35:47Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:软重定向|meta:User:Nbfreeh}}&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:%E8%BD%AF%E9%87%8D%E5%AE%9A%E5%90%91&amp;diff=7043</id>
		<title>Template:软重定向</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:%E8%BD%AF%E9%87%8D%E5%AE%9A%E5%90%91&amp;diff=7043"/>
		<updated>2016-05-22T10:34:46Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​创建页面，内容为“link=&amp;lt;span class=&amp;quot;redirectText&amp;quot; id=&amp;quot;softredirect&amp;quot;&amp;gt;{{{1}}}}}}&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;font-size:small; padding-left:52px;&amp;quot;...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Redirectltr.png|link=]]&amp;lt;span class=&amp;quot;redirectText&amp;quot; id=&amp;quot;softredirect&amp;quot;&amp;gt;[[:{{{1}}}|{{{2|{{{1}}}}}}]]&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;font-size:small; padding-left:52px;&amp;quot; LANG=&amp;quot;zh&amp;quot; dir=&amp;quot;ltr&amp;quot; &amp;gt;本頁面為[[Wikipedia:软重定向|軟重定向]]。&amp;lt;/span&amp;gt;&amp;lt;includeonly&amp;gt;{{{category|{{ #switch:{{NAMESPACE}} | User | User talk = [[Category:用户软重定向|{{PAGENAME}}]] | [[Category:维基百科软重定向|{{PAGENAME}}]]}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=User:Nbfreeh&amp;diff=7041</id>
		<title>User:Nbfreeh</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=User:Nbfreeh&amp;diff=7041"/>
		<updated>2016-05-22T10:32:36Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​以“{{softredirect|meta:User:Nbfreeh}}”替换内容&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{softredirect|meta:User:Nbfreeh}}&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=User_talk:Dousha99&amp;diff=7040</id>
		<title>User talk:Dousha99</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=User_talk:Dousha99&amp;diff=7040"/>
		<updated>2016-05-22T10:24:57Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​/* re： */ 新段落&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--新用户欢迎信息-开始--&amp;gt;&lt;br /&gt;
&amp;lt;!--新用户欢迎信息-版本:1.1-版本时间:2016年3月13日--&amp;gt;&lt;br /&gt;
&amp;lt;!--新用户欢迎信息-最新版本请看“User:Qinyongr/Template:Welcome”--&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background-color: #fdffe7; border: 1px solid #fceb92;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align: middle; padding: 5px;&amp;quot; | [[File:Erdbeerteller01.jpg|135px]]&lt;br /&gt;
| style=&amp;quot;vertical-align: middle; padding: 3px;&amp;quot; | &lt;br /&gt;
&amp;lt;strong&amp;gt;{{BASEPAGENAME}}，您好，欢迎加入计算器百科！送給您一盤草莓!&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
您现已成功注册[[计算器百科:关于|计算器百科]]帐户，用户名为“{{BASEPAGENAME}}”。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
在您[[Special:用户登录|登陆]]后，在条目等大部分名字空间点击“编辑”按钮即可编辑页面。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
如果您愿意，您可以创建您的用户页（[https://calcwiki.org/index.php?title=User:{{BASEPAGENAME}}&amp;amp;action=edit 点击创建]），以便更好地让他人了解您。（请提前阅读用户页方针）&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
如果您在编辑过程中遇到了问题，您可以前往帮助中心以获得帮助，也可以點擊下方的連結联与我讨论问题。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;祝您在计算器百科编辑愉快！&amp;lt;/strong&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
*欢迎您的用户：&lt;br /&gt;
&amp;lt;!--新用户欢迎信息-结束--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- &amp;lt;span style=&amp;quot;background:#A6FFCC;padding:0 9px&amp;quot;&amp;gt;就是他 ☞&amp;lt;/span&amp;gt; [[User:qinyongr|&amp;lt;span style=&amp;quot;box-shadow:0 0 60px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] （[https://calcwiki.org/index.php?title=User_talk:Qinyongr&amp;amp;action=edit&amp;amp;section=new&amp;amp;preload=User:Qinyongr/Template:Welcome/NUUTPH 与我讨论]） 2016年4月11日 (一) 13:11 (CST)&lt;br /&gt;
&lt;br /&gt;
== 请使用移动功能 ==&lt;br /&gt;
&lt;br /&gt;
您好，我们发现您通过页面源代码复制的方式将 [[TI-Nspire]] 移动到了 [[TI-Nspire系列]] ，请在移动页面的时候使用 MediaWiki 的“移动”功能，这个功能可以在 搜索栏 左边的 更多 下拉框里找到。&amp;lt;br/&amp;gt;&lt;br /&gt;
使用移动功能来移动页面可以同时移动页面历史，对页面的维护有一定帮助。&amp;lt;br/&amp;gt;&lt;br /&gt;
祝您在计算器百科编辑愉快！ --[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2016年4月16日 (六) 13:29 (CST)&lt;br /&gt;
&lt;br /&gt;
== 致新初級善意推定用戶 ==&lt;br /&gt;
&lt;br /&gt;
[[File:Calcwiki_AGF.svg|right|150px]]&lt;br /&gt;
&#039;&#039;&#039;您好，Dousha99。經過行政員和[[Project:管理员|管理员]]的討論，现授予您成為[[User:Qinyongr/計算器百科:初級善意推定|初級善意推定]]用戶。 &#039;&#039;&#039;这将允许您：&lt;br /&gt;
*使自己的编辑自动标记为已巡查 &amp;lt;code&amp;gt;(autopatrol)&amp;lt;/code&amp;gt;。&lt;br /&gt;
*执行触发验证码的操作时无需验证 &amp;lt;code&amp;gt;(skipcaptcha)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;請&#039;&#039;&#039;您在自己的用户页放置{{tl|User AGF}}，一个标识阁下是初級善意推定用戶的用户框。&lt;br /&gt;
&lt;br /&gt;
此权限的授予，是因为我们认为是一名&#039;&#039;&#039;可信赖&#039;&#039;&#039;用户。这一权限并不会对您的编辑产生影响，此权限仅旨在减少您和管理员的工作量。您編輯時不會被要求輸入驗證碼，您建立的页面会被自动标记为“已巡查”。&lt;br /&gt;
&lt;br /&gt;
若您（最好永不发生）有滥用权限的嫌疑，您的权限會被&#039;&#039;&#039;剥夺&#039;&#039;&#039;，甚至遭到&#039;&#039;&#039;封禁&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
若您希望自己辞去职务，请至[[Project:申請|申請]]提出申请。&lt;br /&gt;
&lt;br /&gt;
如果有任何问题，欢迎在我的讨论页或是在&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://webchat.freenode.net/?channels=calcwiki IRC 頻道 #Calcwiki]&amp;lt;/span&amp;gt;中提出。&lt;br /&gt;
&lt;br /&gt;
祝您编辑愉快！--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt;          &amp;lt;span style=&amp;quot;box-shadow:0 0 30px #6640FF;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;給我留言&#039;&#039;&#039;-{」}-]]-{「}-歡迎加入 &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://webchat.freenode.net/?channels=calcwiki IRC 頻道 #Calcwiki]&amp;lt;/span&amp;gt;-{」}-&amp;lt;/span&amp;gt; 2016年4月30日 (六) 20:58 (CST)&lt;br /&gt;
&lt;br /&gt;
== re： ==&lt;br /&gt;
&lt;br /&gt;
谢谢您的修改，之所以因为没有正确使用模板是因为我从我在中文维基百科的沙盒复制来的...--[[User:Nbfreeh|Nbfreeh]]（[[User talk:Nbfreeh|讨论]]） 2016年5月22日 (日) 18:24 (CST)&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=User:Nbfreeh&amp;diff=7024</id>
		<title>User:Nbfreeh</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=User:Nbfreeh&amp;diff=7024"/>
		<updated>2016-05-21T03:12:48Z</updated>

		<summary type="html">&lt;p&gt;Nbfreeh：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Infobox Calculator&lt;br /&gt;
| name         = 卡西欧9850计算器系列&lt;br /&gt;
| image        = &lt;br /&gt;
| caption      = &lt;br /&gt;
| type         = [[图形计算器|绘图]] [[编程计算器|编程]]&lt;br /&gt;
| entry        =[[Calculator_input_methods#Infix_notation|Infix]]&lt;br /&gt;
| introduced   = 1996&lt;br /&gt;
| discontinued = 2008&lt;br /&gt;
| manufacturer = [[Casio]]&lt;br /&gt;
| precision    = &lt;br /&gt;
| display_type = [[液晶显示器|LCD]] [[点阵显示屏]]&lt;br /&gt;
| display_size = 128×64 &lt;br /&gt;
| prog_lang    = 类[[BASIC]]&lt;br /&gt;
| memory_user  = &lt;br /&gt;
| memory_data  = 视机型而定&lt;br /&gt;
| memory_step  = &lt;br /&gt;
| supply       =4节[[AAA电池|AAA]]型电池&lt;br /&gt;
| weight       = 190 克&lt;br /&gt;
| dimensions   = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;卡西欧9850图形编程计算器系列&#039;&#039;&#039;在1999年至2008年间生产，这个系列是FX-9750G系列的高阶版本，大部分机型拥有光学液晶彩色显示屏（能显示橙色，绿色和蓝色）。&lt;br /&gt;
==机型==&lt;br /&gt;
===CFX-9850G===&lt;br /&gt;
CFX-9850G于1996年发布，是卡西欧9850计算器系列的第一款产品，让人引人注目的是它带有一个与[[卡西欧 CFX-9800G]]类似的彩色液晶显示屏（这种屏幕的实质是灰阶显示器，通过特殊的光学滤片使其看起来像是彩色的）。和9850G相同的机型是9930GT&amp;lt;ref name=&amp;quot;auto&amp;quot;&amp;gt;{{cite web|url=http://www.spiderpixel.co.uk/caspro/subhtml/modelsef.html|title=CASIO GRAPHIC CALCULATOR MODEL NUMBERS EQUIVALENCE|publisher=}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850G拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;&amp;gt;{{cite web|url=http://www.spiderpixel.co.uk/caspro/subhtml/history.html|title=history of casio graphic calculators|publisher=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB || 否|| 否 || 否&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850G Plus===&lt;br /&gt;
CFX-9850G Plus最早于1997年发布，当时的机身颜色为黑色，较CFX-9850G增加了金融功能，同时带有了Autodim。在2004年，白色版本的CFX-9850G Plus被发布，值得注意的是这个型号将内存扩大至64KB。与CFX-9850G Plus相同的机型是9940GT。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850G Plus（&#039;&#039;&#039;黑色版本&#039;&#039;&#039;）拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB ||是|| 否|| 是&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850G Plus（&#039;&#039;&#039;白色版本&#039;&#039;&#039;）拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 64KB ||是|| 否|| 是&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850Ga Plus===&lt;br /&gt;
CFX-9850Ga Plus于1997年发布，拥有的功能和CFX-9850G Plus黑色版本相同。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850Ga Plus拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB || 是|| 否||是&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850Gb Plus===&lt;br /&gt;
CFX-9850Gb Plus最早于1998年被发布，和CFX-9850G Plus类似，早期只有黑色机身版本，而后于2002年发布了白色机身的版本，但是并没有改进功能。有趣的是，CFX-9850Gb Plus内建了一个程序库，使用者可以将这些程序导入至编程功能中使用。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850Gb Plus拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 32KB ||是|| 是|| 是&lt;br /&gt;
|}&lt;br /&gt;
===CFX-9850Gc Plus===&lt;br /&gt;
CFX-9850Gc Plus与2004年发布，是9850系列的最后一款机型，它相较于前代产品的区别仅仅是拥有64KB内存。&amp;lt;ref name=&amp;quot;auto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ CFX-9850Gc Plus拥有功能&amp;lt;ref name=&amp;quot;spiderpixel.co.uk&amp;quot;/&amp;gt;&lt;br /&gt;
! 计算机代数系统 !! 内存!! 金融!! 内置程序库!! Autodim&lt;br /&gt;
|-&lt;br /&gt;
| 否 || 64KB || 是|| 否|| 是&lt;br /&gt;
|}&lt;br /&gt;
==系列参数==&lt;br /&gt;
===电源===&lt;br /&gt;
卡西欧9850计算器系列使用四节[[AAA电池|AAA]]型电池和一枚CR2032纽扣电池，其中纽扣电池用来保持数据备份。系列所有型号功耗皆为0.06W&amp;lt;ref&amp;gt;计算器背壳上注明：0.06W&amp;lt;/ref&amp;gt;&lt;br /&gt;
===连接===&lt;br /&gt;
&lt;br /&gt;
卡西欧9850计算器系列没有USB接口，其使用随机附送的卡西欧SB-62双机互连线沟通，可以互相导入数据与程序。通过这个接口，可以与德州仪器EA-100系列数据采集器系列相连接，采集类似于光照强度、温度、力、电压、PH值等数据并快速作图，亦可以和卡西欧标签打印机连接。&lt;br /&gt;
===CPU===&lt;br /&gt;
卡西欧9850计算器系列使用了来自日立为卡西欧定制的HCD62121处理器（测量方法使用了[[BogoMips]]，得分是0.000027，从而推测）。&lt;br /&gt;
&lt;br /&gt;
==图库==&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
*[http://www.cncalc.org/forum.php?mod=viewthread&amp;amp;tid=9636&amp;amp;highlight=cfx cfx-9850Gb评测-cncalc论坛]&lt;br /&gt;
*[http://support.casio.com/cn/manual/manuallist.php?cid=004 CASIO WORLDWIDE-支持-说明书-中文]&lt;br /&gt;
&lt;br /&gt;
{{Casio Cal}}&lt;/div&gt;</summary>
		<author><name>Nbfreeh</name></author>
	</entry>
</feed>