跳至內容

模組:Citation/CS1/Configuration

文出維基大典

此編所載,皆徵引模組之機樞也。凡援據書目、考證文獻,其體例格式,皆本乎此。其程式運化,亦準此而行。

分目

[]

其例大致有三:

  1. 曰譯名。凡徵引所需之辭章字句,畢陳於此。若移錄此編於殊方異域之典,當隨俗迻譯,以通其義,使無捍格。
  1. 曰糾謬。凡書式有違、辭氣有誤者,此編定其警語,隸其部類。復指陳釋例之所在,俾便學者按圖索驥,考訂其失。
  1. 曰辨章。所以辨識書契刊號若ISBN、DOI之屬,定其體式,正其名物,使無混同。

local citation_config = {};

-- 削繁去飾,歸於素樸。此處定CSS之式。
-- https://git.wikimedia.org/blob/mediawiki%2Fcore.git/69cd73811f7aadd093050dbf20ed70ef0b42a713/skins%2Fcommon%2FcommonElements.css#L199
local code_style="color:inherit; border:inherit; padding:inherit;";

--[[--------------------------< 方 外 之 域 >------------------------------
    此錄諸界,不入引文誤謬之科。猶設 notracking = true 是也。
    註:界名當以底線連之,勿留空隙。
]]
local uncategorized_namespaces = { 'User', 'Talk', 'User_talk', 'Wikipedia_talk', 'File_talk', 'Template_talk',
	'Help_talk', 'Category_talk', 'Portal_talk', 'Book_talk', 'Draft', 'Draft_talk', 'Education_Program_talk', 
	'Module_talk', 'MediaWiki_talk' };

local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases'};		-- 此乃測試沙盒之屬,亦不入類。

--[[--------------------------< 詞 條 >--------------------------------------------------------------
    譯語表
    此為引文顯示之定語。
    分立於此,以便日後翻譯、修訂。
]]

local messages = {
	['_safe_for_italics'] = {'lay source'},
	
	['archived-dead'] = '($1存卷於$2)',
	['archived-not-dead'] = '(原文$1於$2)',
	['archived-missing'] = '(原文$1存卷於$2)',
	['archived-unfit'] = '原存卷於$1',
	['archived'] = '存卷',
	['by'] = '撰',																-- contributions to authored works: introduction, foreword, afterword
	['cartography'] = '$1繪圖',
	['docket'] = '案號 $1',
	['editor'] = '主編',
	['editors'] = '主編', 
	['edition'] = ' $1', 
	['episode'] = '第$1回',
	['et al'] = '等', 
	['in'] = '(編)',															-- edited works
	['inactive'] = '停更',
	['interview'] = ' 與$2對談:$1',
	['inset'] = '$1 插頁',
	['lay summary'] = '撮要',
	['lay source'] = " &ndash; ''$1''",
	['newsgroup'] = '[[Usenet newsgroup|新聞組]]:&nbsp;$1',
	['original'] = '原文',
	['orig year'] = ' [$1]',
	['published'] = '$1',
	['retrieved'] = '&#91;$1&#93;',
	['season'] = '第$1季', 
	['section'] = '§ $1',
	['sections'] = '§§ $1',
	['series'] = '第$1輯',
	['thesis with type'] = '$1',
	['thesis no type'] = '學位論文',
	['translated'] = '$1譯',
	['type'] = ' ($1)',															-- for titletype
	['written'] = ' 書於$1',

	['vol'] = '$1 卷&nbsp;$2',												-- $1 is sepc; bold journal style volume is in presentation{}
	['vol-no'] = '$1 卷&nbsp;$2 期&nbsp;$3',									-- sepc, volume, issue
	['issue'] = '$1 期&nbsp;$2',												-- $1 is sepc

	['j-vol'] = '$1 $2',														-- sepc, volume; bold journal volume is in presentation{}
	['j-issue'] = ' ($1)',

	['nopp'] = '$1 $2';															-- page(s) without prefix; $1 is sepc

	['p-prefix'] = ": $2",												-- $1 is sepc
	['pp-prefix'] = ": $2",											-- $1 is sepc
	['j-page(s)'] = ': $1',														-- same for page and pages

	['sheet'] = '$1 頁&nbsp;$2',												-- $1 is sepc
	['sheets'] = '$1 頁&nbsp;$2',											-- $1 is sepc
	['j-sheet'] = ': 頁&nbsp;$1',
	['j-sheets'] = ': 頁&nbsp;$1',
	
	['language'] = '<span style="font-family: sans-serif; cursor: default; color:var(--color-subtle, #54595d); font-size: 0.8em; bottom: 0.1em; font-weight: bold;" title="連結至$1頁">($1)</span>', 
	['via'] = " &ndash; 經由$1",
	['event'] = ' 事發於 $1',
	['minutes'] = ' $1 記', 
	
	['parameter-separator'] = '、',
	['parameter-final-separator'] = '及',
	['parameter-pair-separator'] = '及',
	
	['publication-date'] = ' ($1)',	
	
	-- 釋疑頁之所在
	['help page link'] = 'Help:引文格式壹有誤',
	['help page label'] = '釋疑',
	['maintenance-link'] = 'link',
	['maintenance-item'] =  ' $1 ($2)'
}

--[[--------------------------< 內 部 之 誤 >-------------------------------------------
    內部舛誤(若配置得當,則不當見此)
]]

local internal_errors = {
	['undefined_error'] = '謬誤:未定義',
	['unknown_manual_ID'] = '謬誤:手動ID制式不明',
	['unknown_ID_mode'] = '謬誤:ID制式不明',
	['unknown_argument_map'] = '謬誤:參數映射闕如',
	['bad_link_no_origin'] = '謬誤:內鏈有損且無源',
	['bad_url_no_origin'] = '謬誤:網址有損且無源',
	['bare_url_no_origin'] = '謬誤:孤鏈無源',
}

--[[--------------------------< 體 例 >------------------------------------------------------
    顯示之定式。原屬 citation_config.messages,今釐清至此,以正語義。
]]
local presentation = {
	
	['_safe_for_italics'] = {'italic-title', 'trans-italic-title'},
	-- Error output
	-- .error class is specified at https://git.wikimedia.org/blob/mediawiki%2Fcore.git/9553bd02a5595da05c184f7521721fb1b79b3935/skins%2Fcommon%2Fshared.css#L538
	-- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display
	['hidden-error'] = '<span style="display:none;font-size:100%" class="error citation-comment">$1</span>',
	['visible-error'] = '<span style="font-size:100%" class="error citation-comment">$1</span>',

	['accessdate'] = ' <span class="reference-accessdate">$2</span>',			-- to allow editors to hide accessdate using personal css

	['bdi'] = '<bdi$1>$2</bdi>',												-- bidirectional isolation used with |script-title= and the like

	['format'] = ' <span style="font-size:85%;">($1)</span>',					-- for |format=, |chapter-format=, etc

	['access-signal'] = '<span class="plainlinks">$1&#8239;$2</span>',			-- external link with appropriate lock icon
		['free'] = '[[File:Lock-green.svg|9px|link=|alt=公諸同好|公諸同好]]',
		['registration'] = '[[File:Lock-blue-alt-2.svg|9px|link=|alt=註籍方閱|註籍方閱]]',
		['limited'] = '[[File:Lock-blue-alt-2.svg|9px|link=|alt=試閱有期,超限則賈|試閱有期,超限則賈]]',
		['subscription'] = '[[File:Lock-red-alt.svg|9px|link=|alt=納費方閱|納費方閱]]',

	['italic-title'] = "$1",

	['kern-left'] = '<span style="padding-left:0.2em;">$1</span>$2',			-- spacing to use when title contains leading single or double quote mark
	['kern-right'] = '$1<span style="padding-right:0.2em;">$2</span>',			-- spacing to use when title contains trailing single or double quote mark

	['nowrap1'] = '<span class="nowrap">$1</span>',								-- for nowrapping an item: <span ...>yyyy-mm-dd</span>
	['nowrap2'] = '<span class="nowrap">$1</span> $2',							-- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space)
	
	
	['OCinS'] = '<span title="$1" class="Z3988"><span style="display:none;">&nbsp;</span></span>',
																				-- Note: Using display: none on the COinS span breaks some clients.
	['parameter'] = '<code style="'..code_style..'">&#124;$1=</code>',

	['quoted-text'] = '<q>$1</q>',												-- for wrapping |quote= content
	['quoted-title'] = '$1',

	['trans-italic-title'] = "&#91;$1&#93;",
	['trans-quoted-title'] = "&#91;$1&#93;",
	['vol-bold'] = ' <b>$1</b>',												-- for journal cites; for other cites ['vol'] in messages{}
	
	['maintenance'] = '<span class="citation-comment" style="display:none; color:#33aa33">$1</span>',
	
	['citation-with-id'] = '<cite id="$1" class="$2">$3</cite>',
	['citation-no-id'] = '<cite class="$1">$2</cite>'
	
	}
	
--[[--------------------------< 期 刊 參 數 >-----------------------------------
    用於歸併 periodical 諸元之別名,鍵值對應 citation class。
]]

local periodical_parameters = {
	['journal'] = {'journal'},
	['news'] = {'newspaper'}, 
	['magazine'] = {'magazine'}, 
	['web'] = {'website'}, 
	['encyclopaedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'},
	['mailinglist'] = {'mailinglist', 'mailing-list'},
	['_general'] = {'work', 'periodical'}
}																				-- 注意參數排列顺序,_general一定要放最后。

local periodical_compatibility = {
	['journal'] = {
		['drop'] = {'news', 'encyclopaedia', 'mailinglist'}, 
		['warn'] = {'magazine'}, 
		['suggest'] = 'journal'
	},
	['news'] = {
		['drop'] = {'encyclopaedia', 'mailinglist', 'journal'}, 
		['warn'] = {'magazine'}, 
		['suggest'] = 'newspaper'
	},
	['magazine'] = {
		['drop'] = {'encyclopaedia', 'mailinglist'}, 
		['warn'] = {'journal', 'news'}, 
		['suggest'] = 'magazine'
	},
	['web'] = {
		['drop'] = {'encyclopaedia', 'mailinglist'}, 
		['warn'] = {'news', 'journal', 'magazine'}, 
		['suggest'] = 'website'
	},
	['encyclopaedia'] = {
		['drop'] = {'mailinglist', 'news', 'journal', 'magazine'},
	},
	['mailinglist'] = {
		['drop'] = {'encyclopaedia', 'news', 'journal', 'magazine', 'web'}, 
	},
	['book'] = {
		['drop'] = {'news', 'journal', 'mailinglist'},
		['warn'] = {'encyclopaedia', 'magazine'},
		['suggest'] = 'work'
	},
	['conference'] = {
		['drop'] = {'news', 'magazine', 'mailinglist', 'encyclopaedia'},
		['warn'] = {'journal'},
		['suggest'] = 'book-title'
	},
	['map'] = {
		['drop'] = {'mailinglist', 'encyclopaedia'},
	},
	['interview'] = {
		['drop'] = {'mailinglist', 'encyclopaedia', 'journal'}, 
	},
	['AV media'] = {
		['drop'] = {'mailinglist', 'encyclopaedia', 'journal', 'magazine'},
	},
	['podcast'] = {
		['drop'] = {'mailinglist', 'encyclopaedia', 'journal', 'magazine', 'news'},
	},
	['serial'] = {
		['drop'] = {'mailinglist', 'encyclopaedia', 'journal', 'magazine', 'news'},
	},
	['speech'] = {
		['drop'] = {'mailinglist', 'encyclopaedia', 'journal', 'magazine'},
	},
	['episode'] = {
		['drop'] = {'mailinglist', 'encyclopaedia', 'journal', 'magazine', 'news'},
	},
	['thesis'] = {
		['drop'] = {'mailinglist', 'encyclopaedia', 'magazine', 'news'},
	},
	['pressrelease'] = {
		['drop'] = {'mailinglist', 'encyclopaedia', 'magazine', 'journal'},
	},
	['arxiv'] = {
		['drop'] = {'mailinglist', 'encyclopaedia', 'magazine', 'journal', 'web'}
	}
}

local function build_periodical ()
	local periodical_items = {};
	for _, aliases in pairs (periodical_parameters) do
		for _, aliase in pairs (aliases) do
			table.insert (periodical_items, aliase);
		end
	end
	return periodical_items;
end

local periodical = {
	parameters = periodical_parameters,
	compatibility = periodical_compatibility
}

--[[--------------------------< 別 名 >----------------------------------------------------------------
    常用參數之別名表
]]

local aliases = {
	['AccessDate'] = {'access-date', 'accessdate'},
	['Agency'] = 'agency',
	['AirDate'] = {'air-date', 'airdate'},
	['ArchiveDate'] = {'archive-date', 'archivedate'},
	['ArchiveFormat'] = 'archive-format',
	['ArchiveURL'] = {'archive-url', 'archiveurl'},
	['ASINTLD'] = {'ASIN-TLD', 'asin-tld'},
	['At'] = 'at',
	['Authors'] = {'authors', 'people', 'host', 'credits'},
	['BookTitle'] = {'book-title', 'booktitle'},
	['Callsign'] = {'call-sign', 'callsign'},									-- cite interview
	['Cartography'] = 'cartography',
	['Chapter'] = {'chapter', 'contribution'},
	['ChapterFormat'] = {'chapter-format', 'contribution-format', 'section-format'};
	['ChapterURL'] = {'chapter-url', 'chapterurl', 'contribution-url', 'contributionurl', 'section-url', 'sectionurl'},
	['ChapterUrlAccess'] = {'chapter-url-access', 'section-url-access'};
	['City'] = 'city',															-- cite interview
	['Class'] = 'class',														-- cite arxiv and arxiv identifiers
	['Coauthors'] = {'coauthors', 'coauthor'},									-- coauthor and coauthors are deprecated; remove after 1 January 2015?
	['Conference'] = {'conference', 'event'},
	['ConferenceFormat'] = {'conference-format', 'event-format'},
	['ConferenceURL'] = {'conference-url', 'conferenceurl', 'event-url', 'eventurl'},
	['Contribution'] = 'contribution',											-- introduction, foreword, afterword, etc; required when |contributor= set
	['Date'] = 'date',
	['DeadURL'] = {'dead-url', 'deadurl','url-status','urlstatus'},
	['Degree'] = 'degree',
	['DF'] = 'df',
	['DisplayAuthors'] = {'display-authors', 'displayauthors'},
	['DisplayEditors'] = {'display-editors', 'displayeditors'},
	['Docket'] = 'docket',
	['DoiBroken'] = {'doi-broken', 'doi-broken-date', 'doi-inactive-date', 'doi_brokendate', 'doi_inactivedate'},
	['Edition'] = 'edition',
	['Editors'] = 'editors',
	['Embargo'] = 'embargo',
	['Entry'] = {'entry', 'article'},											-- cite encyclopedia only
	['Episode'] = 'episode',													-- cite serial only TODO: make available to cite episode?
	['Format'] = 'format',
	['ID'] = {'id', 'ID'},
	['IgnoreISBN'] = {'ignore-isbn-error', 'ignoreisbnerror'},
	['Inset'] = 'inset',
	['Issue'] = {'issue', 'number'},
	['Language'] = {'language', 'in'},
	['LastAuthorAmp'] = {'last-author-amp', 'lastauthoramp'},
	['LayDate'] = {'lay-date', 'laydate'},
	['LayFormat'] = 'lay-format',
	['LaySource'] = {'lay-source', 'laysource'},
	['LayURL'] = {'lay-url', 'lay-summary', 'layurl', 'laysummary'},
	['Map'] = 'map',															-- cite map only
	['MapFormat'] = 'map-format',												-- cite map only
	['MapURL'] = {'mapurl', 'map-url'},											-- cite map only
	['MapUrlAccess'] = {'map-url-access'},										-- cite map only
	['MessageID'] = 'message-id',
	['Minutes'] = 'minutes',
	['Mode'] = 'mode',
	['NameListFormat'] = {'name-list-format','name-list-style'},
	['Network'] = 'network',
	['NoPP'] = {'no-pp', 'nopp'},
	['NoTracking'] = {'template-doc-demo', 'template doc demo', 'no-cat', 'nocat', 
		'no-tracking', 'notracking'},
	['Number'] = 'number',														-- this case only for cite techreport
	['OrigYear'] = {'orig-year', 'origyear'},
	['Others'] = {'others', 'interviewer', 'interviewers'},
	['Page'] = {'p', 'page'},
	['Pages'] = {'pp', 'pages'},
	['Periodical'] = build_periodical (),
	['Place'] = {'place', 'location'},
	['Program'] = 'program',													-- cite interview
	['PostScript'] = 'postscript',
	['PublicationDate'] = {'publicationdate', 'publication-date'},
	['PublicationPlace'] = {'publication-place', 'publicationplace'},
	['PublisherName'] = {'publisher', 'distributor', 'institution', 'newsgroup'},
	['Quote'] = {'quote', 'quotation'},
	['Ref'] = 'ref',
	['RegistrationRequired'] = 'registration',
	['Scale'] = 'scale',
	['ScriptChapter'] = 'script-chapter',
	['ScriptTitle'] = 'script-title',
	['Section'] = 'section',
	['Sections'] = 'sections',													-- cite map only
	['Season'] = 'season',
	['Series'] = {'series', 'version'},
	['SeriesSeparator'] = 'series-separator',
	['SeriesLink'] = {'series-link', 'serieslink'},
	['SeriesNumber'] = {'series-number', 'series-no', 'seriesnumber', 'seriesno'},
	['Sheet'] = 'sheet',														-- cite map only
	['Sheets'] = 'sheets',														-- cite map only
	['Station'] = 'station',
	['SubscriptionRequired'] = 'subscription',
	['Time'] = 'time',
	['TimeCaption'] = {'time-caption', 'timecaption'},
	['Title'] = 'title',
	['TitleLink'] = {'title-link', 'episode-link', 'titlelink', 'episodelink'},
	['TitleNote'] = 'department',
	['TitleType'] = {'type', 'medium'},
	['TransChapter'] = {'trans-chapter', 'trans_chapter'},
	['TransMap'] = 'trans-map',													-- cite map only
	['Transcript'] = 'transcript',
	['TranscriptFormat'] = 'transcript-format',
	['TranscriptURL'] = {'transcript-url', 'transcripturl'},
	['TransTitle'] = {'trans-title', 'trans_title', 'title_zh'},
	['URL'] = {'url', 'URL'},
	['UrlAccess']={'url-access','urlaccess'},
	['Vauthors'] = 'vauthors',
	['Veditors'] = 'veditors',
	['Via'] = 'via',
	['Volume'] = 'volume',
	['Year'] = 'year',

	['AuthorList-First'] = {"first#", "given#", "author-first#", "author#-first"},
	['AuthorList-Last'] = {"last#", "author#", "surname#", "author-last#", "author#-last", "subject#"},
	['AuthorList-Link'] = {"authorlink#", "author-link#", "author#-link", "subjectlink#", "author#link", "subject-link#", "subject#-link", "subject#link"},
	['AuthorList-Mask'] = {"author-mask#", "authormask#", "author#mask", "author#-mask"},
	
	['ContributorList-First'] = {'contributor-first#','contributor#-first'},
	['ContributorList-Last'] = {'contributor#', 'contributor-last#', 'contributor#-last'},
	['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'},
	['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'},

	['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"},
	['EditorList-Last'] = {"editor#", "editor-last#", "editor#-last", "editor-surname#", "editor#-surname"},
	['EditorList-Link'] = {"editor-link#", "editor#-link", "editorlink#", "editor#link"},
	['EditorList-Mask'] = {"editor-mask#", "editor#-mask", "editormask#", "editor#mask"},
	
	['TranslatorList-First'] = {'translator-first#','translator#-first'},
	['TranslatorList-Last'] = {'translator#', 'translator-last#', 'translator#-last'},
	['TranslatorList-Link'] = {'translator-link#', 'translator#-link'},
	['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'},
}

--[[--------------------------< 預 設 >--------------------------------------------------------------
    參數預設值
]]

local defaults = {
	['DeadURL'] = 'yes',
}


--[[--------------------------< 參 數 支 援 >-----------------------------------------------------
    此表列明各引文類別所支援或必須之參數。
]]
local args_support = {
	['templates_using_volume'] = {'citation', 'AV media', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'},
	['templates_using_issue'] = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news'},
	['templates_not_using_page'] = {'AV media', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'},
	['templates_involving_time'] = {'AV media', 'episode', 'speech', 'podcast', 'serial'},
	['templates_not_using_chapter'] = {'encyclopaedia', 'web', 'news', 'journal', 'magazine', 'pressrelease','podcast', 'newsgroup', 'mailinglist', 'map', 'conference', 'episode', 'serial', 'arxiv', 'biorxiv', 'citeseerx', 'ssrn'},
	['templates_not_using_chapter_format'] = {'web', 'news', 'journal', 'magazine', 'pressrelease','podcast', 'newsgroup', 'mailinglist', 'arxiv', 'biorxiv', 'citeseerx', 'ssrn'},
	['templates_using_contributor'] = {'book', 'citation'},						-- |contributor= and |contribution= only supported in book cites
	['templates_requiring_url'] = {'web', 'podcast', 'mailinglist'}				
}

--[[--------------------------< 關 鍵 字 >--------------------------------------------------------------
    此表為特定參數之許可值。
]]

local keywords = {
	['yes_true_y'] = {'yes', 'true', 'y'},										-- ignore-isbn-error, last-author-amp, no-tracking, nopp, registration, subscription
	['deadurl'] = {'yes', 'true', 'y', 'dead', 'no', 'live', 'unfit', 'usurped', 'deviated'},
	['deadurl-live'] = {'no', 'live'},
	['deadurl-unfit'] = {'unfit', 'usurped'},
	['mode'] = {'cs1', 'cs2'},
	['name-list-format'] = {'vanc', 'amp', '&'},
	['contribution'] = {'afterword', 'foreword', 'introduction', 'preface'},	-- generic contribution titles that are rendered unquoted in the 'chapter' position
	['date-format'] = {'dmy', 'dmy-all', 'mdy', 'mdy-all', 'ymd', 'ymd-all'},
	['id-access'] = {'free'},
	['url-access'] = {'free', 'limited', 'subscription', 'registration'},
}


--[[--------------------------< 隱 匿 字 元 >--------------------------------------
    此表載不可見或非打印之字元,循名或Unicode組別索驥。
    表分層級,便於遍歷。
    蓋因 {{'}} 之類非誤,然隱匿字元實乃隱患,故須識別。
    亦含 stripmarker 之辨。
]]

local invisible_chars = {
	{'replacement', '\239\191\189', '替換字符'},								-- U+FFFD, EF BF BD
	{'apostrophe', '&zwj;\226\128\138\039\226\128\139', '撇號'},				-- apostrophe template: &zwj; hair space ' zero-width space; not an error
	{'apostrophe', '\226\128\138\039\226\128\139', '撇號'},						-- apostrophe template: hair space ' zero-width space; (as of 2015-12-11) not an error
	{'zero width joiner', '\226\128\141', '零寬連字'},							-- U+200D, E2 80 8D
	{'zero width space', '\226\128\139', '零寬空格'},							-- U+200B, E2 80 8B
	{'hair space', '\226\128\138', '髮隙'},								-- U+200A, E2 80 8A
	{'soft hyphen', '\194\173', '軟連字符'},									-- U+00AD, C2 AD
	{'horizontal tab', '\009', '水平製表'},										-- U+0009 (HT), 09
	{'line feed', '\010', '換行'},											-- U+0010 (LF), 0A
	{'carriage return', '\013', '回車'},										-- U+0013 (CR), 0D
--	{'nowiki stripmarker', '\127UNIQ%-%-nowiki%-[%a%d]+%-QINU\127'},			-- nowiki stripmarker; not an error
	{'stripmarker', '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', 'mediawiki佔位符'},	
																				-- stripmarker; may or may not be an error; capture returns the stripmaker type
	{'delete', '\127', '刪除符'},												-- U+007F (DEL), 7F; must be done after stripmarker test
	{'C0 control', '[\000-\008\011\012\014-\031]', 'C0控制符'},					-- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D))
	{'C1 control', '[\194\128-\194\159]', 'C1控制符'},							-- U+0080–U+009F (XXX–APC), C2 80 – C2 9F
	{'Specials', '[\239\191\185-\239\191\191]', '特殊字符'},					-- U+FFF9-U+FFFF, EF BF B9 – EF BF BF
	{'Private use area', '[\238\128\128-\239\163\191]', '私用區'},			-- U+E000–U+F8FF, EE 80 80 – EF A3 BF
	{'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]',
		'補充私用區A'},														-- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD
	{'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]',
		'補充私用區B'},														-- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD
}

--[[--------------------------< 冗 餘 文 字 樣 式 >--------------------------------------

]]

local extra_text_pattern = {
	['edition'] = {
		['good'] = {
		},
		['bad'] = {
			'%f[%a][Ee]d%.?$',
			'%f[%a][Ee]dition$'
		}
	},
	['page'] = {
		['good'] = {
			'^P[^%.Pp]'															-- ok to begin with uppercase P: P7 (pg 7 of section P) but not p123 (page 123) TODO: add Gg for PG or Pg?
		},
		['bad'] = {
			'^[Pp]?[Pp]%.?[ %d]',
			'^[Pp]ages?'
		}
	}
}

--[[---------------------< 佔 位 符 >----------------------------
    Stripmarkers
]]

local stripmarkers = {
	['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127',			-- capture returns name of stripmarker
	['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127'			-- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker()
	}
	
local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]';

--[[--------------------------< 維 護 分 類 >----------------------------------
    此表列維護信息所用之分類。
]]

local maint_cats = {
	['ASIN'] = '引文格式1維護:ASIN逕用ISBN',
	['date_year'] = '引文格式1維護:日期與年',
	['disp_auth_ed'] = '引文格式1維護:顯示-作者',									-- $1 is authors or editors
	['embargo'] = '引文格式1維護:PMC封鎖已逾',
	['english'] = 'CS1維護:標明英文',
	['etal'] = '引文格式1維護:顯式使用等標籤',
	['extra_text'] = '引文格式1維護:文有冗餘',
	['ignore_isbn_err'] = '引文格式1維護:ISBN之誤已略',
	['jfm_format'] = '引文格式1維護:jfm格式',
	['mr_format'] = '引文格式1維護:MR格式',
	['pmc_format'] = '引文格式1維護:PMC格式',
	['unknown_lang'] = '引文格式1維護:語文未詳',
	['untitled'] = '引文格式1維護:期刊無題',
	['zbl_format'] = '引文格式1維護:zbl格式',
	['registration'] = '引文內容需登記者方閱',
	['subscription'] = '引文內容需訂閱者方閱'
	}

--[[--------------------------< 屬 性 分 類 >------------------------------------
    此表列屬性分類。
]]

local prop_cats = {
	['foreign_lang_source'] = 'CS1$1來源 ($2)',					-- |language= categories; $1 is language name, $2 is ISO639-1 code
	['script'] = 'CS1含有外文',							-- when language specified by |script-title=xx: doesn't have its own category
	['script_with_name'] = 'CS1含有$1文本 ($2)',					-- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code
	}


--[[--------------------------< 標 題 類 別 >--------------------------------------------------------
    CitationClass 與 TitleType 之映射(|type= 參數之預設值)
]]

local title_types = {
	['AV media notes'] = '影音媒體說明',
	['interview'] = '訪談',
	['mailinglist'] = '郵列',
	['map'] = '地圖',
	['podcast'] = '播客',
	['pressrelease'] = '新聞稿',
	['report'] = '報告',
	['speech'] = '講演',
	['techreport'] = '技術報告',
	['thesis'] = '學位論文'
	}

--[[--------------------------< 謬 誤 之 狀 >----------------------------------------------
    錯誤情狀表。
    每項詳列ID、提示信息、分類,及是否隱匿。
    若更動錨點(anchor),須同步修訂 Help:CS1 errors。
]]

local error_conditions = {
	accessdate_missing_url = {
		message = '既誌<code style="'..code_style..'">&#124;accessdate=</code>,必書<code style="'..code_style..'">&#124;url=</code>',
		anchor = 'accessdate_missing_url',
		category = '有閱期而無網址之頁',
		hidden = true },
	archive_missing_date = {
		message = '既誌<code style="'..code_style..'">&#124;archiveurl=</code>,必書<code style="'..code_style..'">&#124;archivedate=</code>',
		anchor = 'archive_missing_date',
		category = '存檔網址有誤之頁',
		hidden = false },
	archive_missing_url = {
		message = '既誌<code style="'..code_style..'">&#124;archiveurl=</code>,必書<code style="'..code_style..'">&#124;url=</code>',
		anchor = 'archive_missing_url',
		category = '存檔網址有誤之頁',
		hidden = false },
	arxiv_missing = {
		message = '須書<code style="'..code_style..'">&#124;arxiv=</code>',
		anchor = 'arxiv_missing',
		category = '引文格式壹有誤:arXiv',											-- same as bad arxiv
		hidden = false },
	arxiv_params_not_supported = {
		message = 'arXiv模板參數不支持',
		anchor = 'arxiv_params_not_supported',
		category = '引文格式壹有誤:arXiv',											-- same as bad arxiv
		hidden = false },
	bad_arxiv = {
		message = '宜正<code style="'..code_style..'">&#124;arxiv=</code>',
		anchor = 'bad_arxiv',
		category = '引文格式壹有誤:arXiv',
		hidden = false },
	bad_asin = {
		message = '宜正<code style="'..code_style..'">&#124;asin=</code>',
		anchor = 'bad_asin',
		category ='引文格式壹有誤:ASIN',
		hidden = false },
	bad_bibcode = {
		message = '宜正<code style="'..code_style..'">&#124;bibcode=</code>',
		anchor = 'bad_bibcode',
		category = '引文格式壹有誤:bibcode',
		hidden = false },
	bad_biorxiv = {
		message = '宜正<code style="'..code_style..'">&#124;biorxiv=</code>',
		anchor = 'bad_biorxiv',
		category = '引文格式壹有誤:bioRxiv',
		hidden = false },
	bad_citeseerx = {
		message = '宜正<code style="'..code_style..'">&#124;citeseerx=</code>',
		anchor = 'bad_citeseerx',
		category = '引文格式壹有誤:citeseerx',
		hidden = false },
	bad_cnid = {
		message = '宜正<code style="'..code_style..'">&#124;cn=</code>',
		anchor = 'bad_cnid',
		category = '引文格式壹有誤:CN',
		hidden = false },
	bad_date = {
		message = '宜正<code style="'..code_style..'">$1</code>日期',
		anchor = 'bad_date',
		category = '引文格式壹有誤:日期',
		hidden = true },
	bad_doi = {
		message = '宜正<code style="'..code_style..'">&#124;doi=</code>',
		anchor = 'bad_doi',
		category = '引文格式壹有誤:DOI',
		hidden = false },
	bad_hdl = {
		message = '宜正<code style="'..code_style..'">&#124;hdl=</code>',
		anchor = 'bad_hdl',
		category = '引文格式壹有誤:HDL',
		hidden = false },
	bad_isbn = {
		message = '宜正<code style="'..code_style..'">&#124;isbn=</code>',
		anchor = 'bad_isbn',
		category = 'ISBN有誤之頁',
		hidden = false },
	bad_ismn = {
		message = '宜正<code style="'..code_style..'">&#124;ismn=</code>',
		anchor = 'bad_ismn',
		category = '引文格式壹有誤:ISMN',
		hidden = false },
	bad_issn = {
		message = '宜正<code style="'..code_style..'">&#124;issn=</code>',
		anchor = 'bad_issn',
		category = '引文格式壹有誤:ISSN',
		hidden = false },
	bad_jfm = {
		message = '宜正<code style="'..code_style..'">&#124;jfm=</code>',
		anchor = 'bad_jfm',
		category = '引文格式壹有誤:JFM',
		hidden = false },
	bad_lccn = {
		message = '宜正<code style="'..code_style..'">&#124;lccn=</code>',
		anchor = 'bad_lccn',
		category = '引文格式壹有誤:LCCN',
		hidden = false },
	bad_message_id = {
		message = '宜正<code style="'..code_style..'">&#124;message-id=</code>',
		anchor = 'bad_message_id',
		category = '引文格式壹有誤:message-id',
		hidden = false },
	bad_mr = {
		message = '宜正<code style="'..code_style..'">&#124;mr=</code>',
		anchor = 'bad_mr',
		category = '引文格式壹有誤:MR',
		hidden = false },
	bad_oclc = {
		message = '宜正<code style="'..code_style..'">&#124;oclc=</code>',
		anchor = 'bad_oclc',
		category = '引文格式壹有誤:OCLC',
		hidden = false },
	bad_ol = {
		message = '宜正<code style="'..code_style..'">&#124;ol=</code>',
		anchor = 'bad_ol',
		category = '引文格式壹有誤:OL',
		hidden = false },
	bad_paramlink = {															-- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link=
		message = '宜正<code style="'..code_style..'">&#124;$1=</code>',
		anchor = 'bad_paramlink',
		category = '引文格式壹有誤:參數鏈接',
		hidden = false },
	bad_pmc = {
		message = '宜正<code style="'..code_style..'">&#124;pmc=</code>',
		anchor = 'bad_pmc',
		category = '引文格式壹有誤:PMC',
		hidden = false },
	bad_pmid = {
		message = '宜正<code style="'..code_style..'">&#124;pmid=</code>',
		anchor = 'bad_pmid',
		category = '引文格式壹有誤:PMID',
		hidden = false },
	bad_s2cid = {
		message = '宜正<code style="'..code_style..'">&#124;s2cid=</code>',
		anchor = 'bad_s2cid',
		category = '引文格式壹有誤:S2CID',
		hidden = false },
	bad_ssrn = {
		message = '宜正<code style="'..code_style..'">&#124;ssrn=</code>',
		anchor = 'bad_ssrn',
		category = '引文格式壹有誤:SSRN',
		hidden = false },
	bad_url = {
		message = '宜正<code style="'..code_style..'">&#124;$1=</code>',
		anchor = 'bad_url',
		category = '網址格式有誤之頁',
		hidden = false },
	bare_url_missing_title = {
		message = '<code style="'..code_style..'">&#124;$1=</code>缺題',
		anchor = 'bare_url_missing_title',
		category = '孤鏈無題之頁',
		hidden = false },
	bad_zbl = {
		message = '宜正<code style="'..code_style..'">&#124;zbl=</code>',
		anchor = 'bad_zbl',
		category = '引文格式壹有誤:ZBL',
		hidden = false },
	bad_csbn = {
		message = '宜正<code style="'..code_style..'">&#124;csbn=</code>或<code style="'..code_style..'">&#124;unified=</code>',
		anchor = 'bad_csbn',
		category = '引文格式壹有誤:CSBN',
		hidden = false },
	class_ignored = {
		message = '<code style="'..code_style..'">&#124;class=</code>已略',
		anchor = 'class_ignored',
		category = '引文格式壹有誤:class參數已略',
		hidden = false },
	chapter_ignored = {
		message = '<code style="'..code_style..'">&#124;$1=</code>已略',
		anchor = 'chapter_ignored',
		category = '引文格式壹有誤:章節參數已略',
		hidden = false },
	citation_missing_title = {
		message = '缺題或<code style="'..code_style..'">&#124;title=</code>為空',
		anchor = 'citation_missing_title',
		category = '缺題之頁',
		hidden = false },
	cite_web_url = {
-- this error applies to cite web and to cite podcast
		message = '缺網址或<code style="'..code_style..'">&#124;url=</code>為空',
		anchor = 'cite_web_url',
		category = '缺網址之頁',
		hidden = true },
	coauthors_missing_author = {
		message = '既誌<code style="'..code_style..'">&#124;coauthors=</code>,必書<code style="'..code_style..'">&#124;author=</code>',
		anchor = 'coauthors_missing_author',
		category = '引文格式壹有誤:有合作者而無主作者',
		hidden = false },
	contributor_ignored = {
		message = '<code style="'..code_style..'">&#124;contributor=</code>已略</code>',
		anchor = 'contributor_ignored',
		category = '引文格式壹有誤:合作者',
		hidden = false },
	contributor_missing_required_param = {
		message = '既誌<code style="'..code_style..'">&#124;contributor=</code>,必書<code style="'..code_style..'">&#124;$1=</code>',
		anchor = 'contributor_missing_required_param',
		category = '引文格式壹有誤:合作者',
		hidden = false },
	date_year_mismatch = {
		message = '<code style="'..code_style..'">&#124;year=</code>與<code style="'..code_style..'">&#124;$1=</code>不合',
		anchor = 'date_year_mismatch',
		category = '引文格式壹有誤:日期與年不合',
		hidden = false },
	deprecated_params = {
		message = '參數<code style="'..code_style..'">$1</code>已廢',
		anchor = 'deprecated_params',
		category = '含已廢參數之頁',
		hidden = true },
	doi_inactive_dated = {
		message = '自$1年起DOI不活之頁',
		anchor = 'doi_inactive_dated',
		category = '自$1年起DOI不活之頁',
		hidden = true},
	doi_inactive = {
		message = 'DOI不活之頁',
		anchor = 'doi_inactive_dated',
		category = 'DOI不活之頁',
		hidden = true},
	empty_citation = {
		message = '空引用',
		anchor = 'empty_citation',
		category = '含空引用之頁',
		hidden = false },
	first_missing_last = {
		message = '$1表<code style="'..code_style..'">&#124;first$2=</code>缺<code style="'..code_style..'">&#124;last$2=</code>',
		anchor = 'first_missing_last',
		category = '引文格式壹有誤:缺作者或編者',
		hidden = false },
	format_missing_url = {
		message = '既誌<code style="'..code_style..'">&#124;format=</code>,必書<code style="'..code_style..'">&#124;url=</code>',
		anchor = 'format_missing_url',
		category = '有格式而無網址之頁',
		hidden = true },
	implict_etal_editor = {
		message = '建議改用<code style="'..code_style..'">&#124;displayeditors=</code>',
		anchor = 'displayeditors',
		category = '含舊式縮略標籤之頁',
		hidden = true },
	invalid_param_val = {
		message = '<code style="'..code_style..'">&#124;$1=$2</code>無效',
		anchor = 'invalid_param_val',
		category = '引文格式壹有誤:參數值無效',
		hidden = false },
	invisible_char = {
		message = '參數$2值左起第$3位有$1',
		anchor = 'invisible_char',
		category = '引文格式壹有誤:有隱匿字元',
		hidden = false },
	missing_name = {
		message = '$1表缺<code style="'..code_style..'">&#124;last$2=</code>',
		anchor = 'missing_name',
		category = '引文格式壹有誤:缺作者或編者',
		hidden = false },
	param_access_requires_param = {
		message =  '既誌<code style="'..code_style..'">&#124;$1-access=</code>,必書<code style="'..code_style..'">&#124;$1=</code>',
		anchor = 'param_access_requires_param',
		category = '含-access參數但無主參數之頁',
		hidden = true },
	param_has_ext_link = {
		message = '外部鏈接存於<code style="'..code_style..'">$1</code>',
		anchor = 'param_has_ext_link',
		category = '引文格式壹有誤:外部鏈接',
		hidden = false },
	parameter_discarded = {
		message = '<code style="'..code_style..'">&#124;$1=</code>已棄',
		anchor = 'parameter_discarded',
		category = '引文格式壹有誤:已知參數已棄',
		hidden = false },
	parameter_ignored = {
		message = '未知參數<code style="'..code_style..'">&#124;$1=</code>已略',
		anchor = 'parameter_ignored',
		category = '含未知參數之頁',
		hidden = false },
	parameter_ignored_suggest = {
		message = '未知參數<code style="'..code_style..'">&#124;$1=</code>已略(宜改用<code style="'..code_style..'">&#124;$2=</code>)',
		anchor = 'parameter_ignored_suggest',
		category = '含未知參數之頁',
		hidden = false },
	periodical = {
		message = '參數<code style="'..code_style..'">&#124;$1=</code>與模板<code style="'..code_style..'">{{cite $2}}</code>不合(宜改用<code style="'..code_style..'">{{cite $3}}</code>或<code style="'..code_style..'">&#124;$4=</code>)',
		anchor = 'periodical',
		category = '引文格式壹有誤:參數與模板類型不合',
		hidden = false },
	redundant_parameters = {
		message = '$1只需其一',
		anchor = 'redundant_parameters',
		category = '含冗餘參數之頁',
		hidden = false },
	text_ignored = {
		message = '文本“$1”已略',
		anchor = 'text_ignored',
		category = '含未命名參數之頁',
		hidden = false },
	trans_missing_title = {
		message = '既誌<code style="'..code_style..'">&#124;trans-title=</code>,必書<code style="'..code_style..'">&#124;title=</code>',
		anchor = 'trans_missing_title',
		category = '引文格式壹有誤:翻譯標題',
		hidden = false },
	vancouver = {
		message = '溫哥華格式有誤',
		anchor = 'vancouver',
		category = '引文格式壹有誤:溫哥華格式',
		hidden = false },
	wikilink_in_url = {
		message = '網址-維基內鏈衝突',
		anchor = 'wikilink_in_url',
		category = '引文格式壹有誤:網址-維基內鏈衝突',
		hidden = false },
}

--[[--------------------------< I D 處 理 >--------------------------------------------------------
    此表列各類標識符(ID)。
]]

local id_handlers = {
	['ARXIV'] = {
		parameters = {'arxiv', 'ARXIV', 'eprint'}, 
		link = 'arXiv',
		label = 'arXiv',
		mode = 'manual',
		prefix = '//arxiv.org/abs/', 											-- protocol relative tested 2013-09-04
		encode = false,
		COinS = 'info:arxiv',
		separator = ':',
		access = 'free',
	},
	['ASIN'] = {
		parameters = { 'asin', 'ASIN' },	   
		link = '亞馬遜標準識別碼',
		label = 'ASIN',
		mode = 'manual',
		prefix = '//www.amazon.',
		COinS = nil,															-- no COinS for this id (needs thinking on implementation because |asin-tld=)
		separator = '&nbsp;',
		encode = false;
	},
	['BIBCODE'] = {
		parameters = {'bibcode', 'BIBCODE'}, 
		link = 'Bibcode',
		label = 'Bibcode',
		mode = 'manual',
		prefix = 'https://ui.adsabs.harvard.edu/abs/',
		encode = false,
		COinS = 'info:bibcode',
		custom_access = 'bibcode-access',
		separator = ':',
	},
	['BIORXIV'] = {
		parameters = {'biorxiv'}, 
		link = 'bioRxiv',
		label = 'bioRxiv',
		mode = 'manual',
		prefix = '//doi.org/',
		encode = true,
		COinS = 'pre',
		separator = '&nbsp;',
		access = 'free',
	},
	['CITESEERX'] = {
		parameters = {'citeseerx'},
		link = 'CiteSeerX',
		q = 'Q2715061',
		label = 'CiteSeerX',
		mode = 'manual',
		prefix = '//citeseerx.ist.psu.edu/viewdoc/summary?doi=',
		COinS =  'pre',															-- use prefix value
		access = 'free',														-- free to read
		encode = true,
		separator = '&nbsp;',
	},
	['CNID'] = {
		parameters = {'cn', 'CN'},
		link = '國內統一刊號',
		label = "CN",
		mode = 'manual',
		prefix = 'http://www.nppa.gov.cn/nppa/publishing/view.shtml?&pubCode=',
		encode = true,
		separator = ' ',
	},
	['DOI'] = {
		parameters = { 'doi', 'DOI' },
		link = '數位物件識別號',
		q = 'Q25670',
		label = 'doi',
		mode = 'manual',
		prefix = '//doi.org/',
		COinS = 'info:doi',
		custom_access = 'doi-access',
		separator = ':',
		encode = true,
	},
	['EISSN'] = {
		parameters = {'eissn', 'EISSN'},
		link = 'International_Standard_Serial_Number#Electronic_ISSN',
		label = 'eISSN',
		mode = 'manual',
		prefix = '//www.worldcat.org/issn/',
		COinS = 'rft.eissn',
		encode = false,
		separator = '&nbsp;',
	},
	['HDL'] = {
		parameters = { 'hdl', 'HDL' },
		link = 'Handle System',
		q = 'Q3126718',
		label = 'hdl',
		mode = 'manual',
		prefix = '//hdl.handle.net/',
		COinS = 'info:hdl',
		custom_access = 'hdl-access',
		separator = ':',
		encode = true,
	},
	['ISBN'] = {
		parameters = {'isbn', 'ISBN', 'isbn13', 'ISBN13'}, 
		link = '國際標準書號',
		label = 'ISBN',
		mode = 'manual',
		prefix = 'Special:BookSources/',
		COinS = 'rft.isbn',
		separator = '&nbsp;',
	},
	['ISMN'] = {
		parameters = {'ismn', 'ISMN'}, 
		link = 'International Standard Music Number',
		label = 'ISMN',
		mode = 'manual',
		prefix = '',															-- not currently used; 
		COinS = 'nil',															-- nil because we can't use pre or rft or info:
		separator = '&nbsp;',
	},
	['ISSN'] = {
		parameters = {'issn', 'ISSN'}, 
		link = '國際標準連續出版物號',
		label = 'ISSN',
		mode = 'manual',
		prefix = '//www.worldcat.org/issn/',
		COinS = 'rft.issn',
		encode = false,
		separator = '&nbsp;',
	},
	['JFM'] = {
		parameters = {'jfm', 'JFM'}, 
		link = 'Jahrbuch über die Fortschritte der Mathematik',
		label = 'JFM',
		mode = 'manual',
		prefix = '//zbmath.org/?format=complete&q=an:',
		COinS = 'pre',															-- use prefix value
		encode = true,
		separator = '&nbsp;',
	},
	['JSTOR'] = {
		parameters = {'jstor', 'JSTOR'}, 
		link = 'JSTOR',
		label = 'JSTOR',
		mode = 'external',
		prefix = '//www.jstor.org/stable/', 									-- protocol relative tested 2013-09-04
		COinS = 'pre',	-- use prefix value
		custom_access = 'jstor-access',
		encode = false,
		separator = '&nbsp;',
	},
	['LCCN'] = {
		parameters = {'LCCN', 'lccn'}, 
		link = '美國國會圖書館控制碼',
		label = 'LCCN',
		mode = 'manual',
		prefix = 'http://lccn.loc.gov/',
		COinS = 'info:lccn',													-- use prefix value
		encode = false,
		separator = '&nbsp;',
	},
	['MR'] = {
		parameters = {'MR', 'mr'}, 
		link = '數學評論',
		label = 'MR',
		mode = 'manual',
		prefix = '//www.ams.org/mathscinet-getitem?mr=', 						-- protocol relative tested 2013-09-04
		COinS = 'pre',															-- use prefix value
		encode = true,
		separator = '&nbsp;',
	},
	['OCLC'] = {
		parameters = {'OCLC', 'oclc'}, 
		link = 'OCLC',
		label = 'OCLC',
		mode = 'manual',
		prefix = '//www.worldcat.org/oclc/',
		COinS = 'info:oclcnum',
		encode = true,
		separator = '&nbsp;',
	},
	['OL'] = {
		parameters = { 'ol', 'OL' },
		link = '開放圖書館',
		label = 'OL',
		mode = 'manual',
		prefix = '//openlibrary.org/',
		COinS = nil,															-- no COinS for this id (needs thinking on implementation because /authors/books/works/OL)
		custom_access = 'ol-access',
		separator = '&nbsp;',
		endode = true,
	},
	['OSTI'] = {
		parameters = {'OSTI', 'osti'}, 
		link = '科學和技術信息辦公室',
		label = 'OSTI',
		mode = 'external',
		prefix = '//www.osti.gov/energycitations/product.biblio.jsp?osti_id=',	-- protocol relative tested 2013-09-04
		COinS = 'pre',															-- use prefix value
		custom_access = 'osti-access',
		encode = true,
		separator = '&nbsp;',
	},
	['PMC'] = {
		parameters = {'PMC', 'pmc'}, 
		link = '公共醫學中心',
		label = 'PMC',
		mode = 'manual',
		prefix = '//www.ncbi.nlm.nih.gov/pmc/articles/PMC', 
		suffix = " ",
		COinS = 'pre',															-- use prefix value
		encode = true,
		separator = '&nbsp;',
		access = 'free',
	},
	['PMID'] = {
		parameters = {'PMID', 'pmid'}, 
		link = '公共醫學識別碼',
		label = 'PMID',
		mode = 'manual',
		prefix = '//www.ncbi.nlm.nih.gov/pubmed/',
		COinS = 'info:pmid',
		encode = false,
		separator = '&nbsp;',
	},
	['RFC'] = {
		parameters = {'RFC', 'rfc'}, 
		link = '徵求修正意見書',
		label = 'RFC',
		mode = 'external',
		prefix = '//tools.ietf.org/html/rfc',
		COinS = 'pre',															-- use prefix value
		encode = false,
		separator = '&nbsp;',
		access = 'free',
	},
	['S2CID'] = {
		parameters = {'s2cid', 'S2CID'},
		link = 'Semantic Scholar',  -- l10n: Not created yet
		label = 'S2CID',
		mode = 'manual',
		prefix = 'https://api.semanticscholar.org/CorpusID:',
		COinS = 'pre',															-- use prefix value
		custom_access = 's2cid-access',
		encode = false,
		separator = '&nbsp;',
		},
	['SSRN'] = {
		parameters = {'SSRN', 'ssrn'}, 
		link = '社會科學研究網絡',
		label = 'SSRN',
		mode = 'manual',
		prefix = '//ssrn.com/abstract=', 										-- protocol relative tested 2013-09-04
		COinS = 'pre',															-- use prefix value
		encode = true,
		separator = '&nbsp;',
		access = 'free',
	},
	['USENETID'] = {
		parameters = {'message-id'},
		link = 'Usenet',
		label = 'Usenet:',
		mode = 'manual',
		prefix = 'news:',
		encode = false,
		COinS = 'pre',															-- use prefix value
		separator = '&nbsp;',
	},
	['ZBL'] = {
		parameters = {'ZBL', 'zbl'}, 
		link = 'Zentralblatt MATH',
		label = 'Zbl',
		mode = 'manual',
		prefix = '//zbmath.org/?format=complete&q=an:',
		COinS = 'pre',															-- use prefix value
		encode = true,
		separator = '&nbsp;',
	},
-- LOCAL
	['CSBN'] = {
		parameters = {'unified', 'csbn', 'CSBN'}, 
		link = '統一書號',
		label = 'CSBN',
		mode = 'manual',
		prefix = 'http://book.douban.com/subject_search?search_text=SH',
		COinS = 'rft.csbn',
		encode = true,
		separator = '&nbsp;',
	},
-- END LOCAL
}

return 	{
	aliases = aliases,
	args_support = args_support,
	defaults = defaults,
	error_conditions = error_conditions,
	indic_script = indic_script,
	internal_errors = internal_errors,
	id_handlers = id_handlers,
	keywords = keywords,
	invisible_chars = invisible_chars,
	extra_text_pattern = extra_text_pattern,
	maint_cats = maint_cats,
	messages = messages,
	periodical = periodical,
	presentation = presentation,
	prop_cats = prop_cats,
	stripmarkers = stripmarkers,
	title_types = title_types,
	uncategorized_namespaces = uncategorized_namespaces,
	uncategorized_subpages = uncategorized_subpages,
	}