Template:Cite source

From Tardis Wiki, the free Doctor Who reference

{{Cite source}} is a powerful template for generating in-universe, inline citations. In its most basic usage, it produces a collapsible bit of information about the source being cited, pulled directly from the infobox, intended to supplement the prefix. However, the template also has options for citing specific parts and episodes, variants of sources that don't have their own page and exact page numbers and timestamps.

Basic usage is very simple. When citing a source, instead of linking to the source like usual, wrap in this template, like this: {{Cite source|source's page name}}. For example, if citing The Daleks, you would type:
([[TV]]: {{User:Bongolium500/cite source|The Daleks (TV story)}})
This produces the following:
(TV: Script error: No such module "Bongolium500/story cite".)
The template will automatically strip the dab term in the display text. To specifiy custom display text, you would type the following: {{Cite source|source's page name|display name}}. For example, if citing Project: Lazarus, which, for technical reasons, has the pagename Project Lazarus (audio story), you would type:
([[AUDIO]]: {{User:Bongolium500/cite source|Project Lazarus (audio story)|Project: Lazarus}})
This produces the following:
(AUDIO: Script error: No such module "Bongolium500/story cite".)

Clicking the [+] to the right of the source's name will reveal additional information about the source, intended to provide context to the reader regarding the origin of the source, allowing them to easily decide if it is something they're interested in. This information is automatically pulled from the infobox and generally requires no editor intervention (although you can customise the additional information if desired). For this to work, the page for the source being cited must be using {{Bongolium500/Infobox Story SMW}}. If it is not, an error will be produced. Information about finetuning the text displayed here can be found in the Infobox's documentation.

Exact nature of the additional information

The collapsible additional information can include the following:

  • writer(s)
  • what the source is adapted from
    • the original source's writer(s)
  • series
  • anthology
  • publisher
  • premiere network
  • release year

If there are 4 or more writers, only one will be displayed with the rest replaced by "et al.". Hovering over the "et al." on desktop will show the other writers. For example:

(PROSE: Script error: No such module "Bongolium500/story cite".)

Citing parts and episodes

Sources are often serialised across a number of parts. Sometimes, it can be useful to cite specific parts and episodes. Where possible, this is prefered over generic citations as it makes checking the citation and looking for the information within the source much easier (to make this even easier, consider adding a precise citation).

Named parts and episodes

To cite a specific named episode, use the following format: {{Cite source|source's page name|namedep=episode's section title}}. For example, to cite "The Dead Planet" from The Daleks, you would type:
([[TV]]: {{User:Bongolium500/cite source|The Daleks (TV story)|namedep=The Dead Planet (1)}})
This produces:
(TV: Script error: No such module "Bongolium500/story cite".)

The text provided to the |namedep= parameter must exactly match the episode's section title on the source's page, including any bracketed episode numbers. These bracketed episode numbers will be automatically stripped in the output.

The |namedpart= parameter is very similar. However, it does not produce a link to any specific sections. It has the following format: {{Cite source|source's page name|namedpart=part's name}}. For example, to cite "The House Military" from The Book of the War, you would type:
([[PROSE]]: {{User:Bongolium500/cite source|The Book of the War (novel)|namedpart=The House Military}})
This produces:
(PROSE: Script error: No such module "Bongolium500/story cite".)

Unamed parts and episodes

To cite a specific unamed episode, use the following format: {{Cite source|source's page name|ep=episode number}}. The episode number must be in the exact same format used for that episode's section title on the source's page, including capitalisation. For example, to cite part 7 of The War Games, you would type:
([[TV]]: {{User:Bongolium500/cite source|The War Games (TV story)|ep=seven}})
This produces:
(TV: Script error: No such module "Bongolium500/story cite".)

Unamed parts are cited in a very similar way: {{Cite source|source's page name|part=part number}}. Again, the part number must be in the exact same format used for that part's section title on the source's page, including capitalisation.

Sometimes, the episode or part's section title isn't simply in the format "Episode <number>" or "Part <number>" and so the link produced using this feature will be incorrect. In these situations, provide the full section's title using the |sect= parameter. For example, to cite part 2 of The Klepton Parasites which has the section title "Part Two: 16th November 1964", you would type:
([[COMIC]]: {{User:Bongolium500/cite source|The Klepton Parasites (comic story)|part=Two|sect=Part Two: 16th November 1964}})
This produces:
(COMIC: Script error: No such module "Bongolium500/story cite".)

|sect= can also be used for linking to arbitrary sections outside of the context of episodes and parts, if desired.

Citing variants

Sources sometimes have one or more variants that aren't deserving of their own source page and so are covered on the same page as their "parent" source, such as animated reconstructions or audiobook readings. Occasionally, these variants can present unique information and so may want to be specifically cited. To do so, the variant should first be defined on the source's page using {{User:Bongolium500/store variant data}}. Then, the variant being cited should specified as follows: {{Cite source|source's page name|var=variant name}}. The variant name used by the |var= parameter should be exactly the same as the variant name set in {{User:Bongolium500/store variant data}} as the |variant= parameter. For example, to cite the special edition of The Five Doctors, you would type:
([[TV]]: {{User:Bongolium500/cite source|The Five Doctors (TV story)|var=special edition}})
This produces:
(TV: Script error: No such module "Bongolium500/story cite".)
This works with citing parts as well. For example, if you wanted to cite part 3 of the animated reconstruction of The Faceless Ones, you would type:
([[TV]]: {{User:Bongolium500/cite source|The Faceless Ones (TV story)|var=animated reconstruction|ep=3}})
This produces:
(TV: Script error: No such module "Bongolium500/story cite".)

Precise citations

It can sometimes be useful to cite specific editions, chapters, page numbers or timestamps. The information being cited is rarely from the source as a whole and so being as precise as possible makes verifying information much easier. The precise citations can be used alongside citing parts and citing variants.

Books

To perform precise citations for books, use the |ed=, |chapt= and |page= parameters to define the edition, chapter and page number being cited. These can be used in any combination, although it is often preferable to use |ed= with |page= as page numbers can change between editions. For example, to cite chapter 1 of Doctor Who in an Exciting Adventure with the Daleks, you would type:
([[PROSE]]: {{User:Bongolium500/cite source|Doctor Who in an Exciting Adventure with the Daleks (novelisation)|ed=1965 Armada edition|chapt=1. A Meeting on the Common}})
This produces:
(PROSE: Script error: No such module "Bongolium500/story cite".)
To cite page 10 of The Eight Doctors, you would type:
([[PROSE]]: {{User:Bongolium500/cite source|The Eight Doctors (novel)|page=10}})
This produces:
(PROSE: Script error: No such module "Bongolium500/story cite".)
You can also cite multiple pages. For example, to cite pages 10-20 of The Eight Doctors, you would type:
([[PROSE]]: {{User:Bongolium500/cite source|The Eight Doctors (novel)|page=10-20}})
This produces:
(PROSE: Script error: No such module "Bongolium500/story cite".)

Note the inclusion of the "s" in "pages" in the produced citation. This "s" is added if the template detects any of the following: ",", "-", "and", "&".

Video and audio sources

To perform precise citations for video (including TV stories, webcasts and films) and audio sources, you can define a timestamp using the |hour=, |minute= and |second= parameters. These can be used in any combination. For example, to cite the timestamp 34 minutes and 2 second of Rosa, you would type:
([[TV]]: {{User:Bongolium500/cite source|Rosa (TV story)|minute=34|second=2}})
This produces:
(TV: Script error: No such module "Bongolium500/story cite".)
You can also define entirely custom timestamps using |timestamp=. For example, to cite the timestamp 26:54 of The Boundless Sea, you would type:
([[AUDIO]]: {{User:Bongolium500/cite source|The Boundless Sea (audio story)|timestamp=26:54}})
This produces:
(AUDIO: Script error: No such module "Bongolium500/story cite".)

It can sometimes also be a good idea to use |ed= in these precise citations, particuarly with video sources, as exact timestamps can change between versions, such as the broadcast version, homemedia releases and oversea edits, and these don't always qualify as their own variants.

Custom precise citation text

Alternatively to everything discussed in the prior two sections, you can define entirely custom precise citation text using the |precisecite= parameter.

Customising the additional information

It is possible to overwrite specific bits of information in the collapsible additional information for a specific citation using the following parameters:

  • |writer=
  • |adapted from=
  • |series=
  • |anthology=
  • |publisher=
  • |premiere network=
  • |release year=
You only have to specify the information that you wish to change from the default. Others will be filled in automatically. For example, if you wish to be a little more precise about the release year when citing "The Dead Planet", you would type the following:
([[TV]]: {{User:Bongolium500/cite source|The Daleks (TV story)|namedep=The Dead Planet (1)|release year=1963}})
This produces:
(TV: Script error: No such module "Bongolium500/story cite".)

Using this feature repeatedly on the same page may cause performance issues, but occasional usage shouldn't have much impact.

It is also possible to provide fully customised additional information using the |citationtext= parameter.

Reusing citations

Due to the number of options available, uses of this template can sometimes become very long. Therefore, much like with <ref> references, it is possible to define named citations that can be reused within the page they were defined on. This is done using the |name= parameter. To define a named citation, simply add this parameter to the template usage with a short name. For example, to define a citation named "TFOAR1" for episode 1 of the DVD edition of the animated reconstruction of The Faceless Ones at the timestamp 3 minutes and 4 seconds, you would type:
([[TV]]: {{User:Bongolium500/cite source|The Faceless Ones (TV story)|var=animated reconstruction|ep=1|minute=3|second=4|ed=DVD|name=TFOAR1}})
This produces the following output as normal:
(TV: Script error: No such module "Bongolium500/story cite".)
Then, to reuse this citation, you would only have to type:
([[TV]]: {{User:Bongolium500/cite source|name=TFOAR1}})
This produces:
(TV: Script error: No such module "Bongolium500/story cite".)

When |name= is being used to access an already defined citation, any other parameters passed to the template are ignored. In other words, you cannot alter a named citation in later uses.

Errors and troubleshooting

Due to the complex nature of this large template, there are a number of ways in which it could go wrong and produce an error. This section details these errors, providing potential solutions.

Lua errors

Lua error.JPG If you see any errors like this, please remove the use of this template that is causing it and report it on the talk page with as much detail as you can as soon as possible. These errors generally mean that there is some form of mistake with the template's actual code.

Error: code 1 - data table empty

This error means that the source's infobox was unable to collect any data to put the additional information together. To fix this, first purge the cache of the source's page and the page the citation is being used on. If that doesn't work, make sure that the infobox contains at least one of the pieces of data listed here. If all else fails, manually define the additional information using the |citation text= parameter within the infobox.

Error: Code 2 - no data stored in variables, cache or SMW

This error means that the template is unable to get the additional information from the source's infobox. To fix this, first purge the cache of the source's page and the page the citation is being used on. If this doesn't work, check that the source's page is actually using {{Bongolium500/Infobox Story SMW}} and, if it isn't, convert it so that it is. If this doesn't work, report the error on the talk page.

Error: code 3 - no story given in template transclusion

This is a simple one and means that the template has been used without providing a source to actually be cited. To fix this, include a source like is shown in the first few paragraphs of this page.

Error: Code 4 - no data in variables or cache and SMW returned information for multiple variants, the one required here not being clear

This rather verbose error is an extreme edge case that should never occur. It means that you've attempted to cite a variant where more than one variant for that source exist and, for whatever reason, there is no additional information provided for said variant in the 2 preferred means of storing this information yet Semantic MediaWiki, the last resort, does have this information, the problem being that it is not possible to properly distinguish the multiple variants coming from SMW. To fix this, first purge the cache of the source's page and the page the citation is being used on. If that doesn't work, report the error on the talk page.

Full parameters list

to be added

Technical documentation

to be added