Постоянно защищенный модуль
Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]

Модуль: TaxonItalics ( Обсуждение  · редактировать  · истор  · Ссылки  · Doc  · подстраниц  · песочница  · testcases )

Цель

Модуль поддерживает правильное выделение курсивом научных названий. Ботанические ( ICNafp ) названия могут содержать «связующие термины»; они не должны выделяться курсивом. Гибридный символ × также не следует выделять курсивом. Модуль опционально добавляет вики-ссылки и сокращает имена, выделенные курсивом.

Для невирусных таксонов курсив используется в ранге рода или ниже. Модуль не решает, следует ли выделять научное название курсивом. Используйте для этой цели.{{Is italic taxon}}

использование

  • {{#invoke: TaxonItalics | main | TAXON_NAME}} - выделяет название таксона курсивом.
  • {{#invoke: TaxonItalics | main | TAXON_NAME | connected = yes}} - имя таксона выделяется курсивом, wikil выводит выделенный курсивом вывод на неизмененный ввод
  • {{#invoke: TaxonItalics | main | TAXON_NAME | abbreviated = yes}} - выделяет название таксона курсивом, сокращая все, кроме последней части, до первой буквы.

Его также можно использовать с помощью {{ Taxon italics }}.

Примеры

Просто выделено курсивом

Подключение терминов
  • Pinus subg. Pinus → Pinus subg. Pinus
  • P. subgenus Pinus → P. subg. Pinus
  • П. п. Пинастер → П. п . 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
  • А. е. подвар. ericoides → A. e. подвар. ericoides

Ботанические названия могут содержать только один внутривидовой эпитет; строка типа «Fragaria vesca subsp. vesca f. semperflorens» является классификацией, а не именем, и модуль не обрабатывает ее.

Гибридные символы
  • Elaeagnus × submacrophylla → Elaeagnus × submacrophylla
  • × Беаллара → × Беаллара
  • & раз; Беаллара → × Беаллара
  • {{hybrid}} Беаллара → × Беаллара

Связано

С использованием |linked=yes

Сокращенно

С использованием |abbreviated=yes

  • Populus sect. Айгейрос → П. разд. Aigeiros
  • Acer tataricum subsp. ginnala → А. т. subsp. Ginnala
  • [также связано] × Sorbaronia mitschurinii → × S. mitschurinii
  • [также связаны] Elaeagnus × submacrophylla → E. × submacrophylla
  • Elaeagnus × submacrophylla → E. × submacrophylla
  • Elaeagnus {{hybrid}} submacrophylla → E. × submacrophylla

Еще больше примеров см. В тестовых примерах .

- [[============================================== ===========================Выделите имя таксона соответствующим курсивом, вызвав italicizeTaxonName.Используемый алгоритм:* Если имя выделено курсивом в начале или в конце, ничего не делайте.* Еще * Удалить (внутреннюю) разметку курсивом. * Если имя состоит из четырех слов, а третье слово - ботанический связующий термин, выделите связующий термин курсивом и добавьте курсив разметка вне имени. * В противном случае, если имя состоит из трех слов, а второе слово - ботанический связующий термин или вариант слова "ср.", выделите курсивом связующий термин и добавить курсивом разметку снаружи имени. * В противном случае просто добавьте курсивом разметку снаружи имени. Также модуль: * Гарантирует, что гибридный символ, × и круглые скобки не выделяются курсивом. * Имеет возможность сокращать все части названий таксонов, кроме последней до первой буквы (например, "Pinus sylvestris var. sylvestris" становится "P. s. Var. Sylvestris"). * Имеет возможность привязать выделенное курсивом имя к имени входа.================================================== ===========================]]местный  p  =  {}local  l  =  {}  - используется для хранения чисто локальных функций- соединение терминов в трехчастных названиях (например, Pinus sylvestris var. sylvestris)local  cTerms3  =  {--под. subspecies  =  "subsp." , [ "подп." ]  =  "subsp." , subsp  =  "subsp." , [ "ssp." ]  =  "subsp." , ssp  =  "subsp." , --var. varietas  =  "var." , [ "var." ]  =  "var." , var  =  "var." , - подвар. subvarietas  =  "subvar." , [ "подвар." ]  =  "подвар." , subvar  =  "subvar." , --f. forma  =  "f." , [ "е." ]  =  "f." , f  =  "f." , --subf. subforma  =  "subf." , [ "субф." ]  =  "subf." , subf  =  "subf." }- соединение терминов в двух названиях частей (например, Pinus sect. Pinus)local  cTerms2  =  {- под. subgenus  =  "subg." , [ "подрод." ]  =  "subg." , [ "subg." ]  =  "subg." , subg  =  "subg." , --суперсект. supersection  =  "supersect." , [ "заменить". ]  =  "supersect." , supersect  =  "supersect." , - разд. section  =  "sect." , [ "секта" ]  =  "секта" , sect  =  "sect." , --подраздел. subsction  =  "subsct." , [ "подраздел" ]  =  "подраздел" , subsct  =  "subsct." , - сер. series  =  "ser." , [ "сер." ]  =  "сер." , ser  =  "ser." , --подсудник. Subsries  =  "subser." , [ "subser." ]  =  "subser." , subser  =  "subser." , --cf. cf  =  "cf." , [ "ср." ]  =  "ср." , [ "cf" ]  =  "cf." }- [[============================================== ===========================Основная функция - выделить название таксона курсивом.================================================== ===========================]]функция  p . основной ( фрейм ) локальное  имя  =  фрейм . аргументы [ 1 ]  или  "" local  connected  =  frame . args [ 'connected' ]  ==  'да' местный  сокращенный  =  фрейм . args [ 'сокращенно' ]  ==  'да' возврат  п . italicizeTaxonName ( имя ,  ссылка ,  сокращение )конец- [[============================================== ===========================Служебная локальная функция для сокращения входной строки до ее первого символас последующим ".".И "×", и HTML-объект в начале строки пропускаются вопределение первого символа, как открывающая скобка и открывающая скобка ",что приводит к включению соответствующего закрывающего символа.================================================== ===========================]]функция  l . сокращенно ( str )местный  результат  =  ""местные  hasParentheses  =  falselocal  isQuoted  =  falseесли  мв . ustring . len ( str )  <  2,  тогда- односимвольные строки остаются без измененийрезультат  =  strеще- пропустить открывающую скобку, которая могла бы присутствовать в начале строкиесли  мв . ustring . sub ( str , 1 , 1 )  ==  "("  затемhasParentheses  =  trueрезультат  =  "(" str  =  mw . ustring . sub ( str , 2 , mw . ustring . len ( str ))elseif  mw . ustring . sub ( str , 1 , 1 )  ==  '"',  затемisQuoted  =  trueрезультат  =  '"'str  =  mw . ustring . sub ( str , 2 , mw . ustring . len ( str ))конец- пропустить гибридный символ, который может присутствовать в начале строкиесли  мв . ustring . sub ( str , 1 , 1 )  ==  "×",  затемрезультат  =  "×" str  =  mw . ustring . sub ( str , 2 , mw . ustring . len ( str ))конец- пропустить HTML-объект, который может присутствовать в начале строкиесли  мв . ustring . sub ( str , 1 , 1 )  ==  "&",  затемместный  я , фиктивный  =  mw . ustring . find ( str , ";" , 2 , plain )результат  =  результат  ..  мв . ustring . sub ( str , 1 , i )str  =  mw . ustring . sub ( str , i + 1 , mw . ustring . len ( str ))конец- если что-то осталось, сократите его до первого символа плюс ".",- добавление закрывающей круглой скобки или цитаты, если требуетсяесли  str  ~ =  "",  то результат  =  результат  ..  мв . ustring . sub ( str , 1 , 1 )  ..  "."если  hasParentheses,  то  результат  =  результат  ..  ")"elseif  isQuoted,  то  результат  =  результат  ..  '"'конецконецконецвернуть  результатконец- [[============================================== ===========================Функция, которая выделяет курсивом.================================================== ===========================]]функция  p . italicizeTaxonName ( имя ,  ссылка ,  сокращение ) имя  =  мв . текст . обрезать ( имя ) - если имя начинается с "[", то предполагается, что форматирование присутствует. если  мв . ustring . sub ( name , 1 , 1 )  ==  '['  затем  верните  имя  end - в противном случае начните с замены любого использования курсивных тегов HTML - по разметке Викимедиа; заменить любые альтернативы сущностей на гибридный символ - самим символом; предотвратить обработку гибридного символа как - «слово» путем преобразования следующего пробела в объект HTML местный  italMarker  =  "''" name  =  string.gsub ( mw . text . trim ( name ),  «</? i>» ,  italMarker ) name  =  string.gsub ( string.gsub ( name ,  "& # 215;" ,  "×" ),  "& times;" ,  "×" ) name  =  string.gsub ( name ,  "</? span .->" ,  "" )  - удалить любую разметку диапазона name  =  string.gsub ( name ,  «×» ,  «× & # 32;» ) - теперь выделите курсивом и при необходимости сократите локальный  результат  =  имя если  имя  ~ =  '',  то если  string.sub ( name , 1 , 2 )  ==  italMarker  или  string.sub ( name , - 2 )  ==  italMarker,  то - ничего не делать, если у имени уже есть курсивные маркеры в начале или в конце еще name  =  string.gsub ( name ,  italMarker ,  "" )  - сначала удалите любой внутренний курсив местные  слова  =  mw . текст . split ( имя ,  "" ,  истина ) если  # слова  ==  4  и  cTerms3 [ слова [ 3 ]],  то - третье слово из четырех слов имени является связующим термином - убедитесь, что соединительный термин не выделен курсивом words [ 3 ]  =  '<span style = "font-style: normal;">'  ..  cTerms3 [ words [ 3 ]]  ..  '</span>' если  сокращено,  то слова [ 1 ]  =  л . сокращать ( слова [ 1 ]) слова [ 2 ]  =  л . сокращать ( слова [ 2 ]) конец результат  =  слова [ 1 ]  ..  ""  ..  слова [ 2 ]  ..  ""  ..  слова [ 3 ]  ..  ""  ..  слова [ 4 ] elseif  # words  ==  3  и  cTerms2 [ words [ 2 ]],  затем - второе слово трехсловного имени является связующим термином - убедитесь, что соединительный термин не выделен курсивом words [ 2 ]  =  '<span style = "font-style: normal;">'  ..  cTerms2 [ words [ 2 ]]  ..  '</span>' если  сокращено,  то слова [ 1 ]  =  л . сокращать ( слова [ 1 ]) конец результат  =  слова [ 1 ]  ..  ""  ..  слова [ 2 ]  ..  ""  ..  слова [ 3 ] еще - не имя, как указано выше; иметь дело только с сокращениями если  сокращено,  то если  # слов  >  1,  то результат  =  l . сокращать ( слова [ 1 ]) для  i  =  2 ,  # слов - 1 ,  1  сделать результат  =  результат  ..  ""  ..  л . сокращать ( слова [ i ]) конец result  =  result  ..  ""  ..  слова [ # слова ] конец еще результат  =  имя конец конец - работайте с любым гибридным символом, так как он не должен выделяться курсивом result  =  string.gsub ( result ,  "×" ,  '<span style = "font-style: normal;"> × </span>' ) - используйте круглые скобки, так как они не должны выделяться курсивом result  =  string.gsub ( string.gsub ( result , "% (" , '<span style = "font-style: normal;"> (</span>' ), "%)" , '<span style = " font-style: normal; ">) </span> ' ) - любые вопросительные знаки, окруженные пролётами, могут соединять пролёты result  =  string.gsub ( result , '</span>%? <span style = "font% -style: normal;">' , '?' ) - добавить внешнюю разметку если  связаны,  то если  результат  ~ =  имя,  то result  =  "[["  ..  name  ..  "|"  ..  italMarker  ..  результат  ..  italMarker  ..  "]]" еще result  =  italMarker  ..  "[["  ..  name  ..  "]]"  ..  italMarker конец еще результат  =  italMarker  ..  результат  ..  italMarker конец конец конец вернуть  результатконец- [[============================================== ===========================Служебная функция, используемая другими модулями для проверки наличия соединительного термина.присутствует в имени. Предполагается, что значение имени представляет собой обычный текст.================================================== ===========================]]функция  p . hasCT ( кадр ) возврат  п . hasConnectingTerm ( frame . args [ 1 ]  или  "" )конец функция  p . hasConnectingTerm ( имя )местные  слова  =  mw . текст . split ( имя ,  "" ,  истина )если  # словами  ==  4  и  cTerms3 [ слова [ 3 ]]  затем  вернуться  верноelseif  # words  ==  3  и  cTerms2 [ words [ 2 ]],  затем  возвращается  истинаиначе  вернуть  ложьконецконецвернуть  p