Sabtu, 03 Oktober 2026
14:42 WIB
TERKINI
Lampung Waspada! 406 Titik Panas Terdeteksi di Lampung, Dua Kabupaten Paling Rawan Ekonomi Dan Bisnis Harga Emas Antam 2 Oktober 2026 Melemah, Buyback Ikut Turun Rp5.000 Hukum Ratusan Keluarga di Lampung Timur Bersatu Lawan Dugaan Mafia Tanah ke Polda Regional Laskar Antasari Tundukkan Mahesa Jenar dalam Laga Sengit Liga 1 Regional Barito Putera Raih Kemenangan Krusial atas PSS Sleman Berita Siswa SMA IT Al Firdaus Juara Lomba Gamolan Pekhing se-Lampung, Lestarikan Budaya Berita Barang Tertinggal di Kereta atau Stasiun? Ini Cara KAI Bantu Mengembalikannya Berita Siswa SMK Amal Bakti Lampung Selatan Berjaya di Lomba Film Pendek Nasional Advertorial Keselamatan Pengguna Tol Bakter Prioritas Utama: PT BTB Rutin Inspeksi Rambu dan Marka Regional Informasi Berita Tidak Lengkap: Evakuasi Banjir Sungai Tuan Lampung Waspada! 406 Titik Panas Terdeteksi di Lampung, Dua Kabupaten Paling Rawan Ekonomi Dan Bisnis Harga Emas Antam 2 Oktober 2026 Melemah, Buyback Ikut Turun Rp5.000 Hukum Ratusan Keluarga di Lampung Timur Bersatu Lawan Dugaan Mafia Tanah ke Polda Regional Laskar Antasari Tundukkan Mahesa Jenar dalam Laga Sengit Liga 1 Regional Barito Putera Raih Kemenangan Krusial atas PSS Sleman Berita Siswa SMA IT Al Firdaus Juara Lomba Gamolan Pekhing se-Lampung, Lestarikan Budaya Berita Barang Tertinggal di Kereta atau Stasiun? Ini Cara KAI Bantu Mengembalikannya Berita Siswa SMK Amal Bakti Lampung Selatan Berjaya di Lomba Film Pendek Nasional Advertorial Keselamatan Pengguna Tol Bakter Prioritas Utama: PT BTB Rutin Inspeksi Rambu dan Marka Regional Informasi Berita Tidak Lengkap: Evakuasi Banjir Sungai Tuan

Modul:TaxonItalics

Wikimedia module

Bagikan:
Dokumentasi modullihatsuntingriwayatsegarkan

Module:TaxonItalics (talk · edit · Module:TaxonItalics · links · doc · subpages · sandbox · testcases)

WarningModul Lua ini digunakan pada sekitar 165.000 halaman.
Untuk mencegah suntingan mengganggu skala besar dan beban peladen, setiap perubahan harus diuji di subhalaman /bak pasir atau /kasus uji Modul:TaxonItalics, atau bak pasir modul Anda. Perubahan yang telah diuji kemudian dapat ditambahkan ke halaman ini dalam satu suntingan. Pertimbangkan untuk mendiskusikan perubahan di halaman pembicaraan sebelum mengimplementasikannya.

TujuanTujuan

Modul ini terutama dimaksudkan untuk digunakan oleh sistem kotak takson otomatis. Modul ini mendukung penulisan miring (italik) yang benar untuk nama ilmiah. Nama botani (ICNafp) dapat mengandung "kata penghubung"; bagian-bagian ini tidak boleh ditulis miring. Simbol hibrida, ×, juga tidak boleh ditulis miring. Modul ini secara opsional membuat pranala wiki (wikilink) dan menyingkat nama yang ditulis miring.

Untuk taksa selain virus, penulisan miring digunakan pada peringkat genus atau di bawahnya. Modul ini tidak menentukan apakah suatu nama ilmiah harus ditulis miring. Gunakan {{Is italic taxon}} untuk tujuan ini.

Cara penggunaanCara penggunaan

  • {{#invoke:TaxonItalics|main|TAXON_NAME}} – menulis miring nama takson
  • {{#invoke:TaxonItalics|main|TAXON_NAME|linked=yes}} – menulis miring nama takson, membuat wikilink pada keluaran miring ke masukan yang tidak diubah
  • {{#invoke:TaxonItalics|main|TAXON_NAME|abbreviated=yes}} – menulis miring nama takson, menyingkat semua bagian kecuali bagian terakhir menjadi huruf pertama
  • {{#invoke:TaxonItalics|main|TAXON_NAME|dab=yes}} – menulis miring nama takson, menganggap bagian dalam tanda kurung sebagai istilah disambiguasi, dan tidak menulis bagian itu miring

Parameter dapat digabungkan. Modul ini juga dapat digunakan melalui {{Taxon italics}}.

ContohContoh

Hanya ditulis miringHanya ditulis miring

Kata penghubung
  • Pinus subg. Pinus → Pinus subg. Pinus
  • P. subgenus Pinus → P. subg. Pinus
  • P. subsect. Pinaster → P. subsect. Pinaster
  • Acer tataricum subsp. ginnala → Acer tataricum subsp. ginnala
  • Aster ericoides var. ericoides → Aster ericoides var. ericoides
  • A. ericoides varietas ericoides → A. ericoides var. ericoides
  • A. e. subvar. ericoides → A. e. subvar. ericoides

Nama botani hanya boleh mengandung satu epithet infraspesis; sebuah string seperti "Fragaria vesca subsp. vesca f. semperflorens" adalah suatu klasifikasi, bukan nama, dan tidak ditangani oleh modul ini.

Simbol hibrida
  • Elaeagnus × submacrophylla → Elaeagnus × submacrophylla
  • ×Beallara → ×Beallara
  • × Beallara → × Beallara
  • {{hybrid}}Beallara → ×

Beallara

Dengan pranala (linked)Dengan pranala (linked)

Menggunakan |linked=yes

Disingkat (abbreviated)Disingkat (abbreviated)

Menggunakan |abbreviated=yes

  • Populus sect. Aigeiros → P. sect. Aigeiros
  • Acer tataricum subsp. ginnala → A. t. subsp. ginnala
  • [juga dilink] × Sorbaronia fallax → × S. fallax
  • [juga dilink] Elaeagnus × submacrophylla → E. × submacrophylla
  • Elaeagnus ×submacrophylla → E. ×submacrophylla
  • Elaeagnus {{hybrid}} submacrophylla → E. ×

. submacrophylla

Istilah disambiguasiIstilah disambiguasi

Secara default, bagian nama takson yang berada dalam tanda kurung dianggap sebagai nama subgenus, dan ditulis miring:

  • Varanus (Hapturosaurus) → Varanus (Hapturosaurus)
  • Caia (plant) → Caia (plant) – salah

Untuk memperlakukan bagian dalam tanda kurung sebagai istilah disambiguasi, gunakan |dab=yes

  • Caia (plant) → Caia (plant)
  • (juga dilink) Caia (plant) → Caia (plant)

Untuk contoh lebih lengkap, lihat testcases.

Dokumentasi di atas ditransklusikan dari Modul:TaxonItalics/doc. (sunting | riwayat)
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
--[[=========================================================================
Italicize a taxon name appropriately by invoking italicizeTaxonName.
The algorithm used is:
* If the name has italic markup at the start or the end, do nothing.
* Else
  * Remove (internal) italic markup.
  * If the name is made up of four words and the third word is a
    botanical connecting term, de-italicize the connecting term and add italic
    markup to the outside of the name.
  * Else if the name is made up of three words and the second word is a
    botanical connecting term or a variant of "cf.", de-italicize the
    connecting term and add italic markup to the outside of the name.
  * Else just add italic markup to the outside of the name.
 The module also:
 * Ensures that the hybrid symbol, ×, and parentheses are not italicized, as
   well as any string inside parentheses if dab is true.
 * Has an option to abbreviate all parts of taxon names other than the last
   to the first letter (e.g. "Pinus sylvestris var. sylvestris" becomes
   "P. s. var. sylvestris").
 * Has an option to wikilink the italicized name to the input name.
=============================================================================]]
localp={}
locall={}-- used to store purely local functions
--connecting terms in three part names (e.g. Pinus sylvestris var. sylvestris)
localcTerms3={
--subsp.
subspecies="subsp.",
["subsp."]="subsp.",
subsp="subsp.",
["ssp."]="subsp.",
ssp="subsp.",
--var.
varietas="var.",
["var."]="var.",
var="var.",
--subvar.
subvarietas="subvar.",
["subvar."]="subvar.",
subvar="subvar.",
--f.
forma="f.",
["f."]="f.",
f="f.",
--subf.
subforma="subf.",
["subf."]="subf.",
subf="subf."
}
--connecting terms in two part names (e.g. Pinus sect. Pinus)
localcTerms2={
--subg.
subgenus="subg.",
["subgen."]="subg.",
["subg."]="subg.",
subg="subg.",
--supersect.
supersection="supersect.",
["supersect."]="supersect.",
supersect="supersect.",
--sect.
section="sect.",
["sect."]="sect.",
sect="sect.",
--subsect.
subsection="subsect.",
["subsect."]="subsect.",
subsect="subsect.",
--ser.
series="ser.",
["ser."]="ser.",
ser="ser.",
--subser.
subseries="subser.",
["subser."]="subser.",
subser="subser.",
--cf.
cf="cf.",
["cf."]="cf.",
["c.f."]="cf."
}
--[[=========================================================================
Main function to italicize a taxon name appropriately. For the purpose of the
parameters, see p.italicizeTaxonName().
=============================================================================]]
functionp.main(frame)
localname=frame.args[1]or''
locallinked=frame.args['linked']=='yes'
localabbreviated=frame.args['abbreviated']=='yes'
localdab=frame.args['dab']=='yes'
returnp.italicizeTaxonName(name,linked,abbreviated,dab)
end
--[[=========================================================================
Utility local function to abbreviate an input string to its first character
followed by ".".
Both "×" and an HTML entity at the start of the string are skipped over in
determining first character, as is an opening parenthesis and an opening ",
which cause a matching closing character to be included.
=============================================================================]]
functionl.abbreviate(str)
localresult=""
localhasParentheses=false
localisQuoted=false
ifmw.ustring.len(str)<2then
--single character strings are left unchanged
result=str
else
--skip over an opening parenthesis that could be present at the start of the string
ifmw.ustring.sub(str,1,1)=="("then
hasParentheses=true
result="("
str=mw.ustring.sub(str,2,mw.ustring.len(str))
elseifmw.ustring.sub(str,1,1)=='"'then
isQuoted=true
result='"'
str=mw.ustring.sub(str,2,mw.ustring.len(str))
end
--skip over a hybrid symbol that could be present at the start of the string
ifmw.ustring.sub(str,1,1)=="×"then
result="×"
str=mw.ustring.sub(str,2,mw.ustring.len(str))
end
--skip over an HTML entity that could be present at the start of the string
ifmw.ustring.sub(str,1,1)=="&"then
locali,dummy=mw.ustring.find(str,";",2,plain)
result=result..mw.ustring.sub(str,1,i)
str=mw.ustring.sub(str,i+1,mw.ustring.len(str))
end
--if there's anything left, reduce it to its first character plus ".",
--adding the closing parenthesis or quote if required
ifstr~=""then
result=result..mw.ustring.sub(str,1,1).."."
ifhasParenthesesthenresult=result..")"
elseifisQuotedthenresult=result..'"'
end
end
end
returnresult
end
--[[=========================================================================
The function which does the italicization. Parameters:
 name (string) – the taxon name to be processed
 linked (boolean) – should a wikilink be generated?
 abbreviated (boolean) – should the first parts of the taxon name be
   reduced to capital letters?
 dab (boolean) – should any parenthesized part be treated as a disambiguation
   term and left unitalicized?
=============================================================================]]
functionp.italicizeTaxonName(name,linked,abbreviated,dab)
name=mw.text.trim(name)
-- if the name begins with '[', then assume formatting is present
ifmw.ustring.sub(name,1,1)=='['thenreturnnameend
-- otherwise begin by replacing any use of the HTML italic tags
-- by Wikimedia markup; replace any entity alternatives to the hybrid symbol
-- by the symbol itself; prevent the hybrid symbol being treated as
-- a 'word' by converting a following space to the HTML entity
localitalMarker="''"
name=string.gsub(mw.text.trim(name),"</?i>",italMarker)
name=string.gsub(string.gsub(name,"&#215;","×"),"&times;","×")
name=string.gsub(name,"</?span.->","")-- remove any span markup
name=string.gsub(name,"× ","×&#32;")
-- now italicize and abbreviate if required
localresult=name
ifname~=''then
ifstring.sub(name,1,2)==italMarkerorstring.sub(name,-2)==italMarkerthen
-- do nothing if the name already has italic markers at the start or end
else
name=string.gsub(name,italMarker,"")-- first remove any internal italics
localwords=mw.text.split(name," ",true)
if#words==4andcTerms3[words[3]]then
-- the third word of a four word name is a connecting term
-- ensure the connecting term isn't italicized
words[3]='<span style="font-style:normal;">'..cTerms3[words[3]]..'</span>'
ifabbreviatedthen
words[1]=l.abbreviate(words[1])
words[2]=l.abbreviate(words[2])
end
result=words[1].." "..words[2].." "..words[3].." "..words[4]
elseif#words==3andcTerms2[words[2]]then
-- the second word of a three word name is a connecting term
-- ensure the connecting term isn't italicized
words[2]='<span style="font-style:normal;">'..cTerms2[words[2]]..'</span>'
ifabbreviatedthen
words[1]=l.abbreviate(words[1])
end
result=words[1].." "..words[2].." "..words[3]
else
-- not a name as above; only deal with abbreviation
ifabbreviatedthen
if#words>1then
result=l.abbreviate(words[1])
fori=2,#words-1,1do
result=result.." "..l.abbreviate(words[i])
end
result=result.." "..words[#words]
end
else
result=name
end
end
-- deal with any hybrid symbol as it should not be italicized
result=string.gsub(result,"×",'<span style="font-style:normal;">×</span>')
-- deal with any parentheses as they should not be italicized
ifdabthen
result=string.gsub(string.gsub(result,"%(",'<span style="font-style:normal;">('),"%)",')</span>')
else
result=string.gsub(string.gsub(result,"%(",'<span style="font-style:normal;">(</span>'),"%)",'<span style="font-style:normal;">)</span>')
end
-- any question marks surrounded by spans can have the spans joined
result=string.gsub(result,'</span>%?<span style="font%-style:normal;">','?')
-- add outside markup
iflinkedthen
ifresult~=namethen
result="[["..name.."|"..italMarker..result..italMarker.."]]"
else
result=italMarker.."[["..name.."]]"..italMarker
end
else
result=italMarker..result..italMarker
end
end
end
returnresult
end
--[[=========================================================================
Utility function used by other modules to check if a connecting term is
present in a name. The value of name is assumed to be plain text.
=============================================================================]]
functionp.hasCT(frame)
returnp.hasConnectingTerm(frame.args[1]or'')
end
functionp.hasConnectingTerm(name)
localwords=mw.text.split(name," ",true)
if#words==4andcTerms3[words[3]]thenreturntrue
elseif#words==3andcTerms2[words[2]]thenreturntrue
elsereturnfalse
end
end
returnp
Konten disalin dari Wikipedia Bahasa Indonesia (lisensi CC BY-SA) Lihat versi asli di Wikipedia

Rekomendasi Pilihan