http://wiki.worldsamba.org/index.php?title=Module:Citation&feed=atom&action=historyModule:Citation - Revision history2024-03-29T11:16:14ZRevision history for this page on the wikiMediaWiki 1.28.0http://wiki.worldsamba.org/index.php?title=Module:Citation&diff=3&oldid=prevAdmin: 1 revision imported2017-03-04T03:53:16Z<p>1 revision imported</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<tr style='vertical-align: top;' lang='en'>
<td colspan='1' style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan='1' style="background-color: white; color:black; text-align: center;">Revision as of 03:53, 4 March 2017</td>
</tr><tr><td colspan='2' style='text-align: center;' lang='en'><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>Adminhttp://wiki.worldsamba.org/index.php?title=Module:Citation&diff=2&oldid=prevMatthiaspaul: Switched ISSN and DOI to use relative protocol (http: or https:) instead of being hardwired to http: only. See Template:doi and Template:ISSN2016-05-07T20:15:24Z<p>Switched ISSN and DOI to use relative protocol (http: or https:) instead of being hardwired to http: only. See <a href="/index.php?title=Template:Doi&action=edit&redlink=1" class="new" title="Template:Doi (page does not exist)">Template:doi</a> and <a href="/index.php?title=Template:ISSN&action=edit&redlink=1" class="new" title="Template:ISSN (page does not exist)">Template:ISSN</a></p>
<p><b>New page</b></p><div>---------------------------------------------------------------------<br />
-- Module:Citation - Lua module for Citation auxiliary templates<br />
---------------------------------------------------------------------<br />
-- For the {{citation}} formatting functions, see: Module:Citation/CS1<br />
-- (see NOTES at bottom)<br />
--require "mw.text"<br />
<br />
local z = {<br />
wikitext = require("Module:Wikitext"),<br />
extensiontags = {<br />
nowiki = true,<br />
ref = true,<br />
gallery = true,<br />
pre = true,<br />
source = true,<br />
categorytree = true,<br />
charinsert = true,<br />
hiero = true,<br />
imagemap = true,<br />
inputbox = true,<br />
math = true,<br />
poem = true,<br />
ref = true,<br />
references = true,<br />
syntaxhighlight = true,<br />
timeline = true,<br />
}<br />
}<br />
<br />
function trim( str )<br />
if str == nil then<br />
return nil;<br />
end<br />
return str:match( "^%s*(.-)%s*$" );<br />
end<br />
<br />
function hideinprint(content)<br />
return content<br />
end<br />
<br />
function onlyinprint(content)<br />
return ""<br />
end<br />
<br />
-- This returns a string with HTML character entities for wikitext markup characters.<br />
function wikiescape(text)<br />
text = text:gsub( '[&\'%[%]{|}]', { <br />
['&'] = '&#38;', <br />
["'"] = '&#39;', <br />
['['] = '&#91;', <br />
[']'] = '&#93;', <br />
['{'] = '&#123;', <br />
['|'] = '&#124;', <br />
['}'] = '&#125;' } );<br />
return text;<br />
end<br />
<br />
function createTag(t, frame)<br />
local name = t.name or "!-- --"<br />
local content = t.contents or ""<br />
local attrs = {}<br />
if ( z.extensiontags[name] ) then<br />
-- We have to preprocess these, so that they are properly turned into so-called "strip markers" in the generated wikitext.<br />
if ( not frame ) then error ("Please supply an extra frame argument to the createTag() function.") end<br />
local params = {}<br />
for n,v in pairs(t.params) do<br />
table.insert(params, "|" .. n .. "=" .. v)<br />
end<br />
return frame:preprocess("{{#tag:" .. name .. "|" .. content .. table.concat(params) .. "}}")<br />
else <br />
for n,v in pairs(t.params) do<br />
if (v) then<br />
table.insert(attrs, n .. "=\"" .. wikiescape(v) .. "\"")<br />
else<br />
table.insert(attrs, n)<br />
end<br />
end<br />
if ("" == content) then<br />
return "<" .. name .. " " .. table.concat(attrs, " ") .. "/>"<br />
else<br />
return "<" .. name .. " " .. table.concat(attrs, " ") .. ">" .. content .. "</" .. name .. ">"<br />
end<br />
end<br />
end<br />
<br />
--[[<br />
This is a clone of mw.text.nowiki. When the mw.text library is installed,<br />
this can be replaced by a call to that library. ]]<br />
function nowiki( s )<br />
-- string.gsub is safe here, because we're only caring about ASCII chars<br />
s = string.gsub( s, '["&\'<=>%[%]{|}]', {<br />
['"'] = '&#34;',<br />
['&'] = '&#38;',<br />
["'"] = '&#39;',<br />
['<'] = '&#60;',<br />
['='] = '&#61;',<br />
['>'] = '&#62;',<br />
['['] = '&#91;',<br />
[']'] = '&#93;',<br />
['{'] = '&#123;',<br />
['|'] = '&#124;',<br />
['}'] = '&#125;',<br />
} )<br />
s = string.sub( string.gsub( '\n' .. s, '\n[#*:;]', {<br />
["\n#"] = "\n&#35;",<br />
["\n*"] = "\n&#42;",<br />
["\n:"] = "\n&#58;",<br />
["\n;"] = "\n&#59;",<br />
} ), 2 )<br />
s = string.gsub( s, '://', '&#58;//' )<br />
s = string.gsub( s, 'ISBN ', 'ISBN&#32;' )<br />
s = string.gsub( s, 'RFC ', 'RFC&#32;' )<br />
<br />
return s<br />
end<br />
<br />
function externallinkid(args)<br />
local sep = args.separator or "&nbsp;"<br />
args.suffix = args.suffix or ""<br />
local url_string = args.id<br />
if args.encode == true or args.encode == nil then<br />
url_string = mw.uri.encode( url_string );<br />
end<br />
<br />
local t0 = onlyinprint(args.label .. sep .. args.id)<br />
local t1 = hideinprint("[[" .. args.link .. "|" .. args.label .. "]]" .. sep .. "[" .. args.prefix .. url_string .. args.suffix .. " " .. nowiki(args.id) .. "]")<br />
<br />
return t0 .. t1<br />
end<br />
<br />
function doi(id, inactive, nocat)<br />
local cat = ""<br />
local text;<br />
if ( inactive ~= nil ) then <br />
text = "[[Digital object identifier|doi]]:" .. id;<br />
cat = cat .. "[[Category:Pages with DOIs inactive since " .. selectyear(inactive) .. "]]"<br />
inactive = " (inactive " .. inactive .. ")" <br />
else <br />
text = externallinkid({link="Digital object identifier",label="doi",prefix="//dx.doi.org/",id=id,separator=":"})<br />
inactive = "" <br />
end<br />
if ( string.sub(id,1,3) ~= "10." ) then<br />
cat = cat .. "[[Category:Pages with DOI errors]]" .. '<span class="error"> Bad DOI (expected "10." prefix) in code number</span>'<br />
end<br />
if ( nocat and nocat ~= "" ) then cat = "" end<br />
return text .. inactive .. cat <br />
end<br />
<br />
function selectyear( str )<br />
local lang = mw.getContentLanguage();<br />
local good, result;<br />
good, result = pcall( lang.formatDate, lang, 'Y', str )<br />
if good then <br />
return result;<br />
else<br />
return '';<br />
end<br />
end<br />
<br />
function anchorid(label, args)<br />
local P1 = trim(args[1]) or ""<br />
local P2 = trim(args[2]) or ""<br />
local P3 = trim(args[3]) or ""<br />
local P4 = trim(args[4]) or ""<br />
local P5 = trim(args[5]) or ""<br />
local anchor = P1 .. P2 .. P3 .. P4 .. P5;<br />
if anchor ~= '' then -- See bug description in Citation/CS1<br />
anchor = mw.uri.anchorEncode( anchor );<br />
end<br />
<br />
return label .. anchor<br />
end<br />
<br />
function refid(label, args)<br />
local p = args.p or ""<br />
local pp = args.pp or ""<br />
local loc = args.loc or ""<br />
return anchorid(label, args) .. p .. pp .. loc <br />
end<br />
<br />
function name(args)<br />
local P1 = trim(args[1]) or ""<br />
if ( args[5] ~= nil) then<br />
return P1 .. " et al."<br />
else<br />
local P2 = trim(args[2]) or ""<br />
local P3 = trim(args[3]) or "" <br />
local P4 = trim(args[4]) or ""<br />
if ( args[4] ~= nil ) then<br />
P4 = " " .. P4<br />
P3 = " &amp; " .. P3<br />
P2 = ", " .. P2<br />
elseif ( args[3] ~= nil ) then<br />
P3 = " " .. P3<br />
P2 = " &amp; " .. P2<br />
elseif ( args[2] ~= nil ) then<br />
P2 = " " .. P2 <br />
end<br />
return P1 .. P2 .. P3 .. P4<br />
end <br />
end<br />
<br />
function crossref(frame, label, args)<br />
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself<br />
local LB = config.BracketLeft or ""<br />
local RB = config.BracketRight or ""<br />
local anchor = args.ref or args.Ref or anchorid( label, args)<br />
local text = name(args)<br />
local loc = args.loc<br />
local page<br />
local pages = args.pp or args.pages<br />
if pages == nil or pages == '' then<br />
page = args.p or args.page;<br />
end <br />
if nil == loc then loc = "" else loc = " " .. loc end<br />
if ( page ~= nil ) then<br />
local pagesep = config.PageSep or ", p.&nbsp;"<br />
loc = loc .. pagesep .. page<br />
end<br />
if ( pages ~= nil ) then<br />
local pagessep = config.PagesSep or ", pp.&nbsp;"<br />
loc = loc .. pagessep .. pages<br />
end <br />
local pagename = args.pagename or ""<br />
local ps = args.Postscript or ""<br />
return LB .. "[[" .. pagename .. "#" .. anchor .. "|" .. text .. "]]" .. loc .. RB .. ps<br />
end<br />
<br />
function r0(frame, name, group, page)<br />
if ( name == nil ) then return "" end<br />
if ( group == nil ) then group = "" end<br />
local p = ""<br />
if ( page ~= nil ) then <br />
local contents = ":" .. page<br />
p = createTag({name="sup",contents=contents,params={class="reference",style="white-space:nowrap;"}}) <br />
end<br />
return createTag({name="ref",contents="",params={name=name,group=group}}, frame) .. p<br />
end<br />
<br />
function reflist0(frame, config, args)<br />
local contents = args.refs or ""<br />
local liststyle = args.liststyle<br />
local count = args[1]<br />
local width = args.colwidth<br />
local group = args.group or config.default_group<br />
if ( nil == tonumber(count) and nil == width ) then <br />
width = count<br />
count = nil<br />
end<br />
if ( nil == liststyle ) then<br />
if ( "upper-alpha" == group or "lower-alpha" == group or "upper-roman" == group or "lower-roman" == group or "upper-greek" == group or "lower-greek" == group ) then<br />
liststyle = group<br />
else<br />
liststyle = config.default_liststyle<br />
end<br />
end<br />
local params = {}<br />
params.class = "reflist" <br />
params.style = z.wikitext.liststyle(liststyle)<br />
if ( nil ~= count ) then <br />
params.class = params.class .. " references-column-count references-column-count-" .. count<br />
params.style = params.style .. " " .. z.wikitext.columncountstyle(count)<br />
end <br />
if ( nil ~= width ) then<br />
params.class = params.class .. " references-column-width"<br />
params.style = params.style .. " " .. z.wikitext.columnwidthstyle(width)<br />
end<br />
local references = createTag({name="references",contents=contents,params={group=group}}, frame)<br />
return createTag({name="div",contents=references,params=params})<br />
end<br />
<br />
function refbegin0(frame, config, args)<br />
local liststyle = args.liststyle<br />
local indent = args.indent<br />
local indentsize = args.indentsize<br />
local count = args[1]<br />
local width = args.colwidth<br />
if ( nil == tonumber(count) and nil == width ) then <br />
width = count<br />
count = nil<br />
end<br />
if ( nil == liststyle ) then<br />
if ( "upper-alpha" == group or "lower-alpha" == group or "upper-roman" == group or "lower-roman" == group or "upper-greek" == group or "lower-greek" == group ) then<br />
liststyle = group<br />
else<br />
liststyle = config.default_liststyle<br />
end<br />
end<br />
local params = {}<br />
params.class = "refbegin"<br />
params.style = z.wikitext.liststyle(liststyle)<br />
if ( nil ~= count ) then <br />
params.class = params.class .. " references-column-count references-column-count-" .. count<br />
params.style = params.style .. " " .. z.wikitext.columncountstyle(count)<br />
end <br />
if ( nil ~= width ) then<br />
params.class = params.class .. " references-column-width"<br />
params.style = params.style .. " " .. z.wikitext.columnwidthstyle(width)<br />
end<br />
local dlopen<br />
if ( nil ~= indent ) then<br />
dlopen = z.wikitext.OpenHTMLTag({name="dl",params={style="text-indent: -" .. (indentsize or "3.2") .. "em;"}})<br />
else<br />
dlopen = ""<br />
end<br />
return z.wikitext.OpenHTMLTag({name="div",params=params}) .. dlopen<br />
end<br />
<br />
function refend0(frame, config, args)<br />
local indent = args.indent<br />
local dlclose<br />
if ( nil ~= indent ) then<br />
dlclose = "</dl>"<br />
else<br />
dlclose = ""<br />
end<br />
return dlclose .. "</div>"<br />
end<br />
<br />
-- This is used by {{doi}} to create DOI links in the style used in citations.<br />
function z.doi(frame)<br />
local pframe = frame:getParent()<br />
local id = pframe.args.id or pframe.args[1] or ""<br />
return doi(id)<br />
end<br />
<br />
-- This is used by {{ISSN}} to create ISSN links in the style used in citations.<br />
function z.ISSN(frame)<br />
local pframe = frame:getParent()<br />
local Name = pframe.args[1] or ""<br />
return hideinprint("[[International Standard Serial Number|ISSN]]&nbsp;[//www.worldcat.org/search?fq=x0:jrnl&q=n2:" .. Name .. " " .. Name .. "]")<br />
end<br />
<br />
-- This is used by templates such as {{SfnRef}} to create the (encoded) anchor name for a Harvard cross-reference hyperlink.<br />
function z.SFNID(frame)<br />
local pframe = frame:getParent()<br />
return anchorid('FOOTNOTE', pframe.args)<br />
end<br />
<br />
-- This is used by templates such as {{Harvard citation}} to create the Harvard cross-reference text.<br />
function z.Harvard(frame)<br />
local pframe = frame:getParent()<br />
return crossref(frame, pframe.args)<br />
end<br />
<br />
-- This is used by templates such as {{sfn}} to create the entire cross-reference.<br />
function z.sfn(frame)<br />
local pframe = frame:getParent()<br />
pframe.args.Postscript = pframe.args.postscript or pframe.args.ps or ".";<br />
<br />
local content = crossref(frame, 'CITEREF', pframe.args)<br />
local args = { name = refid( 'FOOTNOTE', pframe.args) }<br />
return createTag({name = "ref", contents = content, params = args}, frame)<br />
end<br />
<br />
-- This is used by template {{r}}.<br />
function z.r(frame)<br />
local pframe = frame:getParent()<br />
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself<br />
local args = pframe.args -- the arguments passed TO the template, in the wikitext that instantiates the template<br />
args.page1 = args.page1 or args.page<br />
local text = ""<br />
-- This would be shorter using ipairs(), but that doesn't work on an arguments table supplied to a template.<br />
local index = 1<br />
while args[index] ~= nil do<br />
local arg = args[index]<br />
local t = r0(frame, arg, args.group, args["page" .. index])<br />
text = text .. t<br />
index = index + 1<br />
end<br />
return text<br />
end<br />
<br />
-- This is used by template {{ref label}}.<br />
function z.reflabel(frame)<br />
local pframe = frame:getParent()<br />
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself<br />
local args = pframe.args -- the arguments passed TO the template, in the wikitext that instantiates the template<br />
local P1 = args[1] or ""<br />
local P2 = args[2] or ""<br />
local P3 = args[3] or ""<br />
local id = nil<br />
local contents = "[[#endnote_" .. P1 .. P3 .. "|&#91;" .. P2 .. "&#93;]]"<br />
local params = {}<br />
params.class="reference"<br />
if ( args.noid == nil or args.noid == "" ) then params.id = "ref_" .. P1 .. P3 end<br />
return createTag({name="sup",contents=contents,params=params})<br />
end<br />
<br />
-- This is used by template {{note label}}.<br />
function z.notelabel(frame)<br />
local pframe = frame:getParent()<br />
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself<br />
local args = pframe.args -- the arguments passed TO the template, in the wikitext that instantiates the template<br />
local id = args[1] or ""<br />
local arrow = args[3] or ""<br />
local postscript = args[4] or ""<br />
local contents <br />
if arrow ~= "" then<br />
local sup_arrow = createTag({name="sup",contents=arrow,params={}})<br />
contents = "[[#ref_" .. id .. arrow .. "|<b>" .. sup_arrow .. "</b>]]" .. postscript<br />
if "none" == arrow then arrow = "^" end -- Change this AFTER using it in the ID parameter and the contents.<br />
else<br />
contents = (args[2] or "") .. postscript<br />
end<br />
local params = { class="citation wikicite" }<br />
if id ~= "" and ( args.noid == nil or args.noid == "" ) then <br />
params.id = mw.uri.anchorEncode("endnote_" .. id .. arrow)<br />
end<br />
return createTag({name="span",contents=contents,params=params})<br />
end<br />
<br />
-- This is used by templates {{reflist}} and {{notelist}}.<br />
function z.reflist(frame)<br />
local pframe = frame:getParent()<br />
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself<br />
local args = pframe.args -- the arguments passed TO the template, in the wikitext that instantiates the template<br />
return reflist0(frame, config, args)<br />
end<br />
<br />
-- This is used by template {{refbegin}}.<br />
function z.refbegin(frame)<br />
local pframe = frame:getParent()<br />
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself<br />
local args = pframe.args -- the arguments passed TO the template, in the wikitext that instantiates the template<br />
return refbegin0(frame, config, args)<br />
end<br />
<br />
-- This is used by template {{refend}}.<br />
function z.refend(frame)<br />
local pframe = frame:getParent()<br />
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself<br />
local args = pframe.args -- the arguments passed TO the template, in the wikitext that instantiates the template<br />
return refend0(frame, config, args)<br />
end<br />
<br />
-- This is used by template {{efn}}.<br />
function z.efn(frame)<br />
local pframe = frame:getParent()<br />
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself<br />
local args = pframe.args -- the arguments passed TO the template, in the wikitext that instantiates the template<br />
return createTag({name="ref",contents=(args[1] or ""),params={name=args.name,group=config.default_group}}, frame)<br />
end<br />
<br />
return z<br />
---------------------------------------------------------------------<br />
--NOTES<br />
--<br />
-- NOTE A1: This Lua module was originally designed to handle a mix<br />
-- of citation styles, crossing Vancouver style with Wikipedia's<br />
-- local Citation Style 1 (CS1) from {Template:Citation/core}.<br />
-- However, the conflicting positions of parameters, scattered<br />
-- in twisted locations across this module, led to a separate<br />
-- variation just to untangle the CS1 format of citations.<br />
--<br />
-- NOTE D2: The placement of dots and other separators between the<br />
-- displayed parameters has been a continual headache, to keep<br />
-- coordinated with the data in parentheses "(data)". There<br />
-- has been a need to pre-check for the existence of related<br />
-- options, to keep from putting double-dots ".." in some cases.<br />
-- In particular, the omission of the "title=" parameter has led<br />
-- to several cases of a spurious dot ". ." because the original<br />
-- design had treated the title as a mandatory parameter.<br />
--<br />
------------------------------------------------------------------------<br />
--HISTORY:<br />
--18Oct2012 Fixed lead-space in Chapter by omitting " ".<br />
--18Oct2012 Fixed lead-space in Chapter/Title as end " " of Authors/Date/...<br />
--19Oct2012 Put HISTORY comments to log major changes (not typos).<br />
--19Oct2012 Fixed extra dot ".." in Title by omitting at end of "tcommon=...".<br />
--19Oct2012 For pages, put &nbsp in "p.&nbsp;" etc.<br />
--19Oct2012 Enhanced "pages=" to detect lone page as "p." else "pp." prefix.<br />
--19Oct2012 Fixed to show "." after Periodical name (work, newspaper...).<br />
--19Oct2012 Fixed web-link to have spaces "[... Archived] from the original".<br />
--19Oct2012 Fixed to show ";" between authors & coauthors.<br />
--19Oct2012 Fixed to omit extra "." after coauthors.<br />
--20Oct2012 Fixed COinS data to not urlencode all, as "ctx_ver=Z39.88-2004"<br />
--20Oct2012 Fixed COinS to not end as "&" but use lead "&rft...=" form.<br />
--20Oct2012 Fixed COinS to not url.encode page's "rfr_id=..." pagename.<br />
--20Oct2012 Fixed COinS data when "web" to default to rft.genre "book".<br />
--05Nov2012 Add a span wrapper even when there is no Ref parameter<br />
--15Feb2013 Added Agency for "agency=xx".<br />
--19Feb2013 Put NOTES comments to explain module operation.<br />
--19Feb2013 Copied as Module:Citation/CS1 to alter to match wp:CS1 form.<br />
--19Feb2013 Changed OrigYear to use [__] for CS1 style.<br />
--19Feb2013 Fixed to not show duplicate Publisher/Agency.<br />
--19Feb2013 Moved page-number parameters to after final date.<br />
--19Feb2013 Fixed to not put double-dots after title again.<br />
--20Feb2013 Changed to omit dot "." if already ends with dot.<br />
--20Feb2013 If class "journal" shows Publisher after Periodical/Series.<br />
--20Feb2013 Shifted Format to after Language, and Others after Volume.<br />
--20Feb2013 Set AccessDate + <span class="reference-accessdate"><br />
--20Feb2013 Fixed url when deadurl=no.<br />
--20Feb2013 Added sepc for separator character between parameters.<br />
--20Feb2013 Put "OCLC" for "Online Computer Library Center".<br />
--20Feb2013 Fix empty "authorlink=" as person.link ~= "".<br />
--20Feb2013 Added space after AuthorSep & AuthorNameSep.<br />
--21Feb2013 Added args.contributor (was missing parameter).<br />
--21Feb2013 Fixed EditorSep (was misspelled "EdithorSep").<br />
--21Feb2013 Set OCinSdata.rft_val_fmt = "info:ofi/fmt:kev:mtx:book"<br />
--21Feb2013 Checked to omit blank codes (asin= | doi= etc.).<br />
--21Feb2013 Set enddot to end line if not config.CitationClass "citation".<br />
--21Feb2013 Fixed to show "issn=x" as the ISSN code.<br />
--21Feb2013 Fixed to show "id=x" after Zbl code.<br />
--21Feb2013 Changed to omit double-dot before date when already dot.<br />
--21Feb2013 Order config.CitationClass "citation": Volume, Issue, Publisher.<br />
--21Feb2013 Put warning "Bad DOI (expected "10."..)" in DOI result.<br />
--21Feb2013 Automatically unbolded volume+comma when > 4 long.<br />
--21Feb2013 Changed to allow lowercase "asin-tld".<br />
--22Feb2013 Fixed ref=harv to extract Year from Date.<br />
--22Feb2013 Set Harvard refer. span id if config.CitationClass "citation".<br />
--22Feb2013 Fixed config.CitationClass "citation" as span class="citation".<br />
--22Feb2013 Capitalized "Archived/Retrieved" only when sepc is dot ".".<br />
--23Feb2013 Fixed author editor for "in" or "In" and put space after sepc.<br />
--23Feb2013 Changed to omit dot in "et al." when sepc is "." separator.<br />
--23Feb2013 Fixed "author1-first" to also get args.given or args.given1.<br />
--23Feb2013 Fixed args.article to set Title, after Periodical is Title.<br />
--23Feb2013 Fixed to allow blank Title (such as "contribution=mytitle").<br />
--23Feb2013 Fixed double-dot ".." at end of Editors list<br />
--26Feb2013 Moved "issue=" data to show before "page=".<br />
--26Feb2013 Moved "type=" data to show after "format=".<br />
--26Feb2013 For "pmc=" link, omitted suffix "/?tool=pmcentrez".<br />
--27Feb2013 For coauthors, omitted extra separator after authors.<br />
--27Feb2013 For date, allowed empty date to use month/day/year.<br />
--27Feb2013 Fixed double-dot ".." at end of authors/coauthors list.<br />
--27Feb2013 Reset editor suffix as ", ed." when date exists.<br />
--27Feb2013 Removed duplicate display of "others=" data.<br />
--27Feb2013 Removed parentheses "( )" around "department" TitleNote.<br />
--05Mar2013 Moved Language to follow Periodical or Series.<br />
--05Mar2013 Fixed Edition to follow Series or Volume.<br />
--05Mar2013 Fixed class encyclopaedia to show article as quoted Chapter.<br />
--05Mar2013 Fixed class encyclopaedia to show page as "pp." or "p.".<br />
--07Mar2013 Changed class encyclopaedia to omit "( )" around publisher.<br />
--07Mar2013 Fixed end double-dot by string.sub(idcommon,-1,-1) was "-1,1".<br />
--13Mar2013 Removed enddot "." after "quote=" parameter.<br />
--13Mar2013 Changed config.CitationClass "news" to use "p." page format.<br />
--13Mar2013 Fixed missing "location=" when "web" or "encyclopaedia".<br />
--14Mar2013 Fixed end double-dot after book/work title.<br />
--14Mar2013 Fixed double-dot before "p." or "pp." page number.<br />
--14Mar2013 Fixed config.CitationClass "book" to use p./pp. page.<br />
--<br />
--End</div>Matthiaspaul