Template:Smallcaps/doc
This is a documentation subpage for
Template documentation[edit]
Template sandbox and testcases for TEMPLATE_NAME[edit]Overview[edit]This page provides a clean workflow to safely edit and validate TEMPLATE_NAME:
Use this page to:
Quick links[edit]
How to test[edit]1. Edit the sandbox at Template:TEMPLATE_NAME/sandbox. 2. Open this test page and click “Show preview” to render the sandbox with inputs below. 3. Verify each testcase: Does the “Actual output” match the “Expected output”? 4. If all pass, consider copying sandbox to live using an edit summary like: “Sync from /sandbox: passes all /testcases as of YYYY-MM-DD.” Previewing tips[edit]
Test harness[edit]The following sections render the sandbox template against curated inputs. Each testcase shows:
Testcase A: Minimal invocation[edit]Parameters: {{TEMPLATE_NAME}} Expected output: [Minimal successful output with defaults: e.g., a neutral message or basic box] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase B: Common parameters[edit]Parameters: {{TEMPLATE_NAME | param1 = Alpha | param2 = Beta | flag = yes }} Expected output: [Example: shows "Alpha" and "Beta" in designated slots; flag toggles enhanced styling] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase C: Edge values and escaping[edit]Parameters: {{TEMPLATE_NAME | param1 = [[Linked target|Visible text]] | param2 = {{subst:CURRENTTIMESTAMP}} | raw = <code><span class="x">escaped</span></code> }} Expected output: [Links render correctly; timestamp subst is literal in expected; raw shows escaped markup] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase D: Internationalization (i18n)[edit]Parameters: {{TEMPLATE_NAME | lang = ja | text = こんにちは世界 }} Expected output: [Text displays correctly for non-ASCII; applies lang attribute or rtl/ltr where applicable] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase E: Error handling[edit]Parameters: {{TEMPLATE_NAME | param1 = | required = <!-- intentionally omitted --> }} Expected output: [Shows a gentle error or maintenance category; does not break page layout] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Maintenance[edit]
Categories[edit]Copy-paste skeletons[edit]Below are ready-to-use skeletons for the sandbox and testcases subpages. Skeleton: Template:TEMPLATE_NAME/sandbox[edit]<!-- Sandbox for TEMPLATE_NAME --> <!-- Copy the entire template source here; edit safely. --> {{#if:{{{required|}}} | <!-- normal output --> <div class="tmpl"> <b>{{{param1|}}}</b> · <i>{{{param2|}}}</i> {{#if:{{{flag|}}}|<span class="flag">✓</span>|}} {{#if:{{{raw|}}}|<span class="raw">{{{raw}}}</span>|}} </div> | <!-- error / missing required --> <span class="error">TEMPLATE_NAME: missing required parameter</span> [[Category:Pages with TEMPLATE_NAME errors]] }} Skeleton: Template:TEMPLATE_NAME/testcases[edit]<!-- Testcases for TEMPLATE_NAME; render against /sandbox --> ; Minimal : {{TEMPLATE_NAME/sandbox}} ; Common params : {{TEMPLATE_NAME/sandbox | param1 = Alpha | param2 = Beta | flag = yes }} ; Edge and escaping : {{TEMPLATE_NAME/sandbox | param1 = [[Linked target|Visible text]] | param2 = 20250101T000000Z | raw = <code><span class="x">escaped</span></code> }} ; I18n : {{TEMPLATE_NAME/sandbox | lang = ja | text = こんにちは世界 }} ; Error handling : {{TEMPLATE_NAME/sandbox | required = }} Review checklist[edit]
Template:Terminate sentence ensures a sentence ends with a specified terminator (default: a period). It avoids adding duplicate terminators and can optionally trim trailing spaces. It attempts to ignore trailing closing quotes or brackets when deciding whether a terminator is already present. Usage[edit]Basic: {{Terminate sentence|This is a sentence}}
→ This is a sentence.
Named parameters: {{Terminate sentence
|text=He said "Hello"
|term=.
}}
→ He said "Hello".
Custom terminator: {{Terminate sentence|text=Warning|term=!}}
→ Warning!
Avoid duplicate terminator: {{Terminate sentence|text=Already done.|term=.}}
→ Already done.
Trim trailing spaces: {{Terminate sentence|text=Ends with space |trim=yes}}
→ Ends with space.
Skip processing: {{Terminate sentence|text=No changes here|skip=yes}}
→ No changes here
Append a note: {{Terminate sentence|text=Complete|note=(source: 2025)}}
→ Complete. (source: 2025)
Parameters[edit]
Behavior details[edit]
Examples[edit]
{{Terminate sentence|text=He whispered "hush"|term=.}}
→ He whispered "hush".
{{Terminate sentence|text=Complete (verified)|term=.}}
→ Complete (verified).
{{Terminate sentence|text=Alert|term=!}}
→ Alert!
{{Terminate sentence|text=Wait...|term=.|allowdup=yes}}
→ Wait.... Best practices[edit]
Lua-powered variant (optional)[edit]For more robust detection (including multilingual quotes and punctuation), create -- Module:TerminateUtil
local M = {}
local closing = {
[")"] = true, ["]"] = true, ["}"] = true,
['"'] = true, ["'"] = true, ["”"] = true, ["’"] = true, ["»"] = true, ["›"] = true
}
local function trimRight(s)
return (s:gsub("%s+$",""))
end
function M.lastVisibleChar(args)
local s = args.s or ""
s = trimRight(s)
local i = #s
while i > 0 do
local c = s:sub(i,i)
if closing[c] then
i = i - 1
else
return c
end
end
return ""
end
return M
Then update the template to call: {{#invoke:TerminateUtil|lastVisibleChar|s=text}}
This improves detection for closing quotes and brackets. See also[edit]It may contain usage information, categories and other content that is not part of the original template page. |
| This template should not be used in citation templates such as Citation Style 1 and Citation Style 2, because it includes markup that will pollute the COinS metadata they produce; see COinS in Wikipedia. |
{{Smallcaps}} will display the lowercase part of your text as a soft format of typographical small caps.
For example: {{smallcaps|Beware of Dog}} → Beware of Dog.
This template should be avoided or used sparingly in articles, as the that small caps should be avoided and reduced to one of the other title cases or normal case and markup should be kept simple.
Usage
[edit]Your source text is not altered in the output, only the way it is displayed on the screen: a copy-paste of the text will give the small caps sections in their original form; similarly, an older or non-CSS browser will only display the original text on screen.
- Code
{{Smallcaps|Your Text in 4004 BC}}- Displayed
- Your Text in 4004 BC
- Pasted
- Your Text in 4004 BC
This template is therefore intended for the use of caps as a typographic style, such as rendering family names in bibliographies in small caps to distinguish them from given names. It should not be used for acronyms or abbreviations which are supposed to be capitalized regardless of style. For such cases, use {{Smallcaps all}}.
Notes
[edit]- Diacritics (å, ç, é, ğ, ı, ñ, ø, ş, ü, etc.) are handled. However, because the job is performed by each reader's browser, inconsistencies in CSS implementations can lead to some browsers not converting certain rare diacritics.
- Use of this template does not generate any automatic categorization. As with most templates, if the argument contains an = sign, the sign should be replaced with {{=}}, or the whole argument be prefixed with 1=. And for wikilinks, you need to use piping. There is a parsing problem with MediaWiki which causes unexpected behavior when a template with one style is used within a template with another style.
- There is a problem with dotted and dotless I.
{{Lang|tr|{{Smallcaps|ı i}}}}gives you ı i, although the language is set to Turkish. - Do not use this inside citation templates, or this template's markup will be included in the COinS metadata. This means that reference management software such as Zotero will store the markup. For example, if {{smallcaps}} is used to format the surname of Bloggs, Joe in {{cite journal}}, then Zotero will store the name as
<span style="font-variant:small-caps;">Bloggs</span>, Joe. This is incorrect COinS metadata.
Code examples
[edit]| Code | Display (screen) | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{Smallcaps|The ''Name'' of the 2nd Game}} | The Name of the 2nd Game | ||||||||||||||||||||||
| Leonardo {{Smallcaps|DiCaprio}} (born 1974) | Leonardo DiCaprio (born 1974) | ||||||||||||||||||||||
| José {{Smallcaps|Álvarez de Toledo y Gonzaga}} | José Álvarez de Toledo y Gonzaga | ||||||||||||||||||||||
| {{Smallcaps|Nesbø, Vågen, Louÿs, Zúñiga, Kabaağaçlı}} | Nesbø, Vågen, Louÿs, Zúñiga, Kabaağaçlı | ||||||||||||||||||||||
| When your text uses an = sign: | |||||||||||||||||||||||
| {{Smallcaps|You and Me = Us}} | {{{1}}} | ||||||||||||||||||||||
| {{Smallcaps|You and Me = Us}} | You and Me = Us | ||||||||||||||||||||||
| {{Smallcaps|You and Me {{=}} Us}} | You and Me = Us | ||||||||||||||||||||||
| {{Smallcaps|1=You and Me = Us}} | You and Me = Us | ||||||||||||||||||||||
| When your text uses a template: | |||||||||||||||||||||||
| in {{Smallcaps|Fiddler's {{Green{{!}}Green}}}} forever | Green}} forever | ||||||||||||||||||||||
| in {{Smallcaps|1=Fiddler's {{Green|Green}}}} forever | in Fiddler's Green forever | ||||||||||||||||||||||
| in {{Smallcaps|Fiddler's {{Green|Green}}}} forever | in Fiddler's Green forever | ||||||||||||||||||||||
| {{Green|1=in {{Smallcaps|Fiddler's Green}} forever}} | in Fiddler's Green forever | ||||||||||||||||||||||
| {{Colors|green|yellow|3=in {{Smallcaps|Fiddler's Green}} forever}} |
| ||||||||||||||||||||||
| When your text uses a | pipe: | |||||||||||||||||||||||
| {{Smallcaps|Before|afteR}} | Before | ||||||||||||||||||||||
| {{Smallcaps|1=Before{{!}}afteR}} | afteR | ||||||||||||||||||||||
| {{Smallcaps|Before|afteR}} | Before|afteR | ||||||||||||||||||||||
| When your text uses a link: | |||||||||||||||||||||||
| [[{{Smallcaps|Mao}} Zedong]] | [[Mao Zedong]] | ||||||||||||||||||||||
| [[Mao Zedong|{{Smallcaps|Mao}} Zedong]] | Mao Zedong | ||||||||||||||||||||||
Note that most of these uses are not sanctioned by the WP:Manual of Style and should be avoided in article prose.
Reasons to use small caps
[edit]Small caps are useful for encyclopedical and typographical uses including:
- To lighten ALL-CAPS surnames mandated by citation styles such as Harvard
- Piccadilly has been compared to "a Parisian boulevard" (Dickens 1879).
- Dickens, C., Jr (1879). "Piccadilly" in Dickens's Dictionary of London. London: C. Dickens.
- To disambiguate Western names and surnames at a glance
- Many Hispanic names are tricky to decompose:
- Jorge Luis Borges, but Adolfo Bioy (both filed under "B")
- José Álvarez, Marqués de los Trujillos
- And many Hispanic names are better known by their second surname:
- Many names (Martín, Miguel, Ramón, Tomás, etc.) can be either forename or surname:
- Juan Martín Hernández vs. Rafael Martín Vázquez (two ball players)
- Hungarian names natively use the surname-first order:
- Petőfi Sándor is usually westernized Sándor Petőfi
- To disambiguate Eastern surnames and given names at a glance
- Most Chinese names and Korean names retain their surname-first order:
- Mao Zedong fought Chiang Kai-shek
- The movie Oldboy by Park Chan-wook starring Choi Min-sik was not seen by Kim Il-sung
- Especially in Hong Kong and Macao, a Western given name may be added as well:
- Most Japanese names are reversed in the West, but not all:
- (Akira Kurosawa or Motojirō Kajii are usually westernized)
- But Matsuo Bashō, Ono no Komachi, Kaga no Chiyo (haiku poets known under their given name)
- But Edogawa Ranpo (kept due to wordplay "EdgarA–llanPoe) vs. Ranpo Edogawa (some modern uses)
- Burmese names ignore the concept of forename/surname, but are adapted in the West:
- Daw Aung San Suu Kyi, daughter of General Aung San ("Daw" is honorific, her name takes part of his name)
- And some Burmese names are so short they need to retain an honorific prefix (U for Mister, Daw for Madam, Thakin for Master) which is confusable with a forename or a surname:
- To cite Unicode character names correctly without unwanted emphasizing
- Such names are required to be written in capitals by the Unicode standard. In running text, “U+022A latin capital letter o with diaeresis and macron” is a less predominant alternative to “U+022A LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON”.
Technical
[edit]Technically, the template merely wraps the standard:
<span style="font-variant:small-caps;"> ... </span>
(The "font-variant:small-caps;text-transform:lowercase" has not been used because it does not work at least in Internet Explorer 5 and 6, which are still fairly common browsers.)
Suppressing small caps
[edit]If you wish to suppress the display of small caps in your browser, as a logged in user, you can make an edit to your common.css reading
span.smallcaps { font-variant: normal !important; }
See also
[edit]Templates that change the display (copy-paste will get the original text):
- {{Allcaps}} – upper-case display
- {{Nocaps}} – lower-case display
- {{Smallcaps}} – small-caps display
- {{Smallcaps all}} – hard-formatted small-caps display
- {{Fixcaps}} – capitalizes words {{fixcaps|pLAy/tHE/GamE}} → Template:Fixcaps
Magic words that rewrite the output (copy-paste will get the text as displayed):
- {{lc:}} – lower case output of the full text
- {{uc:}} – upper case output of the full text
- {{lcfirst:}} – lower case output of the first character only
- {{ucfirst:}} – upper case output of the first character only