Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt...

51
Πολυγλωσσια Polyglossia: Modern multilingual typeseing with X E L A T E X and LuaL A T E X FRanÇois ChaRette ARthuR ReutenaueR Bastien RoucaRiÈs JÜRgen SpitzmÜlleR 2020/04/08 v1.49 (pdf file generated on 8 April 2020) Contents 1 Introduction 1 2 Setting up multilingual documents 2 2.1 Activating languages ........................ 2 2.2 Supported languages ........................ 3 2.3 Relation to and use of Babel language names ........... 4 2.4 Using IETF language tags ...................... 4 2.5 Global options ............................ 10 3 Language-switing commands 11 3.1 Recommended commands ..................... 11 3.2 Babel commands ........................... 12 3.3 Other commands .......................... 12 3.4 Seing up alias commands ..................... 13 4 Font setup 13 Current maintainer 1

Transcript of Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt...

Page 1: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Π ο λ υ γ λ ω σ σ ι α

Polyglossia Modern multilingual typesetting withX ELATEX and LuaLATEX

FRanCcedilois ChaRette ARthuR ReutenaueRlowastBastien RoucaRiEgraves JUumlRgen SpitzmUumllleR

20200408 v149(pdf file generated on 8 April 2020)

Contents

1 Introduction 1

2 Setting up multilingual documents 221 Activating languages 222 Supported languages 323 Relation to and use of Babel language names 424 Using IETF language tags 425 Global options 10

3 Language-switching commands 1131 Recommended commands 1132 Babel commands 1233 Other commands 1234 Setting up alias commands 13

4 Font setup 13lowastCurrent maintainer

1

5 Adapting hyphenation 1451 Hyphenation exceptions 1452 Hyphenation disabling 14

6 Language-specific options and commands 1561 afrikaans 1562 arabic 1563 armenian 1664 belarusian 1665 bengali 1766 catalan 1767 croatian 1868 czech 1969 dutch 20610 english 20611 esperanto 20612 finnish 21613 french 21614 gaelic 23615 georgian 23616 german 24617 greek 25618 hebrew 25619 hindi 25620 hungarian 26621 italian 26622 korean 27623 kurdish 27624 lao 28625 latin 28626 malay 31627 marathi 31628 mongolian 31629 norwegian 32630 persian 33631 portuguese 33632 russian 33633 sami 34

2

634 sanskrit 34635 serbian 35636 slovak 35637 slovenian 36638 sorbian 36639 spanish 37640 syriac 37641 thai 38642 tibetan 38643 ukrainian 38644 welsh 39

7 Modifying or extending captions date formats and language settings 39

8 Script-specific numbering 4081 General localization of numbering 4182 Non-Western decimal digits 4183 Non-Latin alphabetic numbering 42

9 Footnotes in right-to-left context 4491 Horizontal footnote position 4492 Footnote rule length and position 45

10 Calendars 45101 Hebrew calendar (hebrewcalsty) 45102 Islamic calendar (hijricalsty) 45103 Farsi (jalālī) calendar (farsicalsty) 46

11 Auxiliary commands 46

12 Accessing language information 47

13 Acknowledgements (by Franccedilois Charette) 48

14 More acknowledgements (by the current development team) 49

3

1 Introduction

Polyglossia is a package for facilitatingmultilingual typesetting with X ELATEX and(with some exceptions) LuaLATEX Basically it can be used as an alternative tobabel for performing the following tasks automatically

1 Loading the appropriate hyphenation patterns2 Setting the script and language tags of the current font (if possible and

available) via the package fontspec3 Switching to a font assigned by the user to a particular script or language4 Adjusting some typographical conventions according to the current lan-

guage (such as afterindent frenchindent spaces before or after punctu-ation marks etc)

5 Redefining all document strings (like ldquochapterrdquo ldquofigurerdquo ldquobibliographyrdquo)6 Adapting the formatting of dates (for non-Gregorian calendars via external

packages bundled with polyglossia currently the Hebrew Islamic andFarsi calendars are supported)

7 For languages that have their own numbering system modifying theformatting of numbers appropriately (this also includes redefining the al-phabetic sequence for non-Latin alphabets)1

8 Ensuring proper directionality if the document contains languages that arewritten from right to left (via the package bidi available separately)

Several features of babel that do not make sense in the X ETEX world (like fontencodings shorthands etc) are not supported Generally speaking polyglossiaaims to remain as compatible as possible with the fundamental features of babelwhile being cleaner light-weight and modern The package antomega has beenvery beneficial in our attempt to reach this objective

Requirements The current version of polyglossia makes use of some conveni-ent macros defined in the etoolbox package by Philipp Lehmann and JosephWRight Being designed for X ELATEX and LuaLATEX it obviously also relies onfontspec by Will RobeRtson For languages written from right to left it needsthe package bidi (for X ETEX) or luabidi (for LuaTEX) by Vafa Khalighi خليقي) (وفاand the bidi-tex GitHub Organisation Polyglossia also bundles three packagesfor calendaric computations (hebrewcal hijrical and farsical)

1This is done by bundled sub-packages such as arabicnumbers

4

2 Setting up multilingual documents

21 Activating languages

The default language of a document is specified by means of the commandsetdefaultlanguage[⟨options⟩]⟨lang⟩setdefaultlanguage

(or equivalently setmainlanguage) Secondary languages are specified withsetmainlanguage

setotherlanguage[⟨options⟩]⟨lang⟩setotherlanguage

All these commands allow you to set language-specific options2 It is also pos-sible to load a series of secondary languages at once (but without options) using

setotherlanguages⟨lang1⟩⟨lang2⟩⟨lang3⟩⟨hellip⟩setotherlanguages

All language-specific options can be modified locally by means of the language-switching commands described in section 3

Note In general it is advisable to activate the languages after all packages havebeen loaded This is particularly important if you use right-to-left scripts or lan-guages with babel shorthands

22 Supported languages

Table 1 lists all languages currently supported Those in red have specific optionsandor commands that are explained in section 6 below

Version Notes The support for Amharic larr should be considered an experi-v101

mental attempt to port the package ethiop feedback is welcome Version 111larrv111

added support for Asturian Lithuanian and Urdu Version 12 larr introducedv120

Armenian Occitan Bengali Lao Malayalam Marathi Tamil Telugu and Turk-men3 Version 143 larr brought basic support for Japanese (this is considered

v143experimental feedback is appreciated) In version 145 larr support for Kurd-

v145ish and Mongolian as well as some new variants (Canadian French and Eng-lish) have been added Furthermore for consistency reasons some languagehave been renamed (farsirarrpersian friulanrarrfriulianmagyarrarrhungarian por-tugesrarrportuguese saminrarrsami) or merged (bahasaibahasamrarrmalay brazilportugesrarrportuguese lsorbianusorbianrarrsorbian irishscottishrarrgaelic norsknynorskrarrnorwegian) The old names are still supported for backwards com-patibility reasons Version 146larr introduces support for Afrikaans Belarusian

v146Bosnian and Georgian

2Section 6 documents these options for the respective languages3See acknowledgements at the end for due credit to the various contributors

5

Table 1 Languages currently supported in polyglossia

afrikaans danish hungarian marathi slovenianalbanian divehi icelandic mongolian sorbianamharic dutch interlingua nko spanisharabic english italian norwegian swedisharmenian esperanto japanese occitan syriacasturian estonian kannada persian tamilbasque finnish khmer piedmontese telugubelarusian french korean polish thaibengali friulian kurdish portuguese tibetanbosnian gaelic lao romanian turkishbreton galician latin romansh turkmenbulgarian georgian latvian russian ukrainiancatalan german lithuanian sami urducoptic greek macedonian sanskrit vietnamesecroatian hebrew malay serbian welshczech hindi malayalam slovak

23 Relation to and use of Babel language names

If you are familiar with the babel package you will note that polyglossiarsquos lan-guage naming slightly differs Whereas babel has a unique name for each lan-guage variety (eg american and british) polyglossia differentiates language vari-eties via language options (eg english variant=american)

Furthermore babel sometimes uses abbreviated language names (eg ba-hasam for Bahasa Malayu) as well as endonyms ie language names comingfrom the designated languages (such as bahasa canadien or magyar) As op-posed to this polyglossia always uses spelled-out (lower-cased) English languagenames Please refer to table 2 for the differing language names in both packages

For convenience reasons polyglossia also supports the use of babel nameslarrv146

(for the few justified exceptions please refer to the notes in table 2) Thebabel names listed in table 2 can be used instead of the corresponding poly-glossia nameoptions in setdefaultlanguage and setotherlanguage as wellas in the polyglossia and babel language switching commandsenvironmentsdocumented in section 31 and 32 (eg textaustrian is synonymous totextgerman[variant=austrianspelling=old]) However unless you havespecial reasons we strongly encourage you to use the polyglossia names

6

Table 2 Babel-polyglossia language name matching

Babel name Polyglossia name Polyglossia options

acadien french variant=acadianamerican english variant=american [default]australian english variant=australianaustrian german variant=austrian spelling=oldbahasa malay variant=indonesian [default]bahasam malay variant=malaysianbrazil portuguese variant=brazilianbritish english variant=britishcanadian english variant=canadiancanadien french variant=canadianclassiclatina latin variant=classicfarsi persianecclesiasticlatinb latin variant=ecclesiasticfriulan friuliangermanc german spelling=oldirish gaelic variant=irish [default]kurmanji kurdish variant=kurmanjilowersorbian sorbian variant=lowermagyar hungarianmedievallatind latin variant=medievalnaustrian german variant=austriannewzealand english variant=newzealandngerman german variant=german [default]norsk norwegian variant=bokmalnswissgerman german variant=swissnynorsk norwegian variant=nynorsk [default]polutonikogreek greek variant=polytonicportuges portuguese variant=portuguese [default]samin samiscottish gaelic variant=scottishserbianc serbian script=Cyrillicslovene slovenianspanishmx spanish variant=mexicanswissgerman german variant=swiss spelling=olduppersorbian sorbian variant=upper [default]

aIn babel currently only selectable via dot modifier (latinclassic)bIn babel currently only selectable via dot modifier (latinecclesiastic)cDue to the name conflict only available in polyglossia as germanb (which is a babel synonym)dIn babel currently only selectable via dot modifier (latinmedieval)

7

24 Using IETF language tags

Polyglossia larr also supports the use of language tags that conform to thev147

IETF BCP-47 Best Current Practice4 Thus you can use tags such as en-GB(for British English) or de-AT-1901 (for Austrian German old spelling) insetdefaultlanguage and setotherlanguage as well as in the language switch-ing command textlang⟨tag⟩ the environment beginlang⟨tag⟩ hellipendlang and the babel language switching commandsenvironments docu-mented in section 32 Table 3 lists the currently supported tags

Table 3 BCP47-polyglossia language name matching

BCP-47 tag Polyglossia name Polyglossia options

aeb arabic locale=tunisiaaf afrikaansafb arabic locale=defaultam amharicapd arabic locale=defaultar arabicar-IQ arabic locale=mashriqar-JO arabic locale=mashriqar-LB arabic locale=mashriqar-MR arabic locale=mauritaniaar-PS arabic locale=mashriqar-SY arabic locale=mashriqar-YE arabic locale=defaultarq arabic locale=algeriaary arabic locale=moroccoarz arabic locale=defaultast asturianayl arabic locale=libyabe belarusianbe-tarask belarusian spelling=classicbg bulgarianbn bengalibo tibetanbr bretonbs bosnianca catalan

4Please refer to httpstoolsietforghtmlbcp47 and httpsenwikipediaorgwikiIETF_language_tag for details

8

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

ckb kurdish variant=sorani [default]ckb-Arab kurdish variant=sorani script=Arabic [default]ckb-Latn kurdish variant=sorani script=Latincop copticcy welshcz czechda danishde germande-AT german variant=austrian spelling=newde-AT-1901 german variant=austrian spelling=oldde-AT-1996 german variant=austrian spelling=newde-CH german variant=swiss spelling=newde-CH-1901 german variant=swiss spelling=oldde-CH-1996 german variant=swiss spelling=newde-DE german variant=german spelling=newde-DE-1901 german variant=german spelling=oldde-DE-1996 german variant=german spelling=new [default]de-Latf german script=blackletterde-Latf-AT german variant=austrian spelling=new script=blackletterde-Latf-AT-1901 german variant=austrian spelling=old script=blackletterde-Latf-AT-1996 german variant=austrian spelling=new script=blackletterde-Latf-CH german variant=swiss spelling=new script=blackletterde-Latf-CH-1901 german variant=swiss spelling=old script=blackletterde-Latf-CH-1996 german variant=swiss spelling=new script=blackletterde-Latf-DE german variant=german spelling=new script=blackletterde-Latf-DE-1901 german variant=german spelling=old script=blackletterde-Latf-DE-1996 german variant=german spelling=new script=blackletterdsb sorbian variant=lowerdv divehiel greekel-monoton greek variant=monotonic [default]el-polyton greek varant=polytonicen englishen-AU english variant=australianen-CA english variant=canadianen-GB english variant=britishen-NZ english variant=newzealanden-US english variant=us [default]eo esperanto

9

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

es spanishes-ES spanish variant=spanish [default]es-MX spanish variant=mexicanet estonianeu basquefa persianfi finnishfr frenchfr-CA french variant=canadianfr-CH french variant=swissfr-FR french variant=french [default]fur friulianga gaelic variant=irish [default]gd gaelic variant=scottishgl galiciangrc greek variant=ancienthe hebrewhi hindihr croatianhsb sorbian variant=upper [default]hu hungarianhy armeniania interlinguaid malay variant=indonesianis icelandicit italianja japaneseka georgiankm khmerkmr kurdish variant=kurmanjikmr-Arab kurdish variant=kurmanji script=Arabickmr-Latn kurdish variant=kurmanji script=Latinkn kannadako koreanku kurdishku-Arab kurdish script=Arabicku-Latn kurdish script=Latinla latinla-x-classic latin variant=classic

10

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

la-x-ecclesia latin variant=ecclesiasticla-x-medieval latin variant=medievallo laolt lithuanianlv latvianmk macedonianml malayalammn mongolianmr marathinb norwegian variant=bokmalnko nkonl dutchnn norwegian variant=nynorsk [default]oc occitanpl polishpms piedmontesept portuguesept-BR portuguese variant=brazilianpt-PT portuguese variant=portuguese [default]rm romanshro romanianru russianru-luna1918 russian spelling=modern [default]ru-petr1708 russian spelling=oldsa sanskritsa-Beng sanskrit script=Bengalisa-Deva sanskrit script=Devanagari [default]sa-Gujr sanskrit script=Gujaratisa-Knda sanskrit script=Kannadasa-Mlym sanskrit script=Malayalamsa-Telu sanskrit script=Teluguse samisk slovaksl sloveniansq albaniansr serbiansr-Cyrl serbian script=Cyrillicsr-Latn serbian script=Latin [default]sv swedish

11

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 2: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

5 Adapting hyphenation 1451 Hyphenation exceptions 1452 Hyphenation disabling 14

6 Language-specific options and commands 1561 afrikaans 1562 arabic 1563 armenian 1664 belarusian 1665 bengali 1766 catalan 1767 croatian 1868 czech 1969 dutch 20610 english 20611 esperanto 20612 finnish 21613 french 21614 gaelic 23615 georgian 23616 german 24617 greek 25618 hebrew 25619 hindi 25620 hungarian 26621 italian 26622 korean 27623 kurdish 27624 lao 28625 latin 28626 malay 31627 marathi 31628 mongolian 31629 norwegian 32630 persian 33631 portuguese 33632 russian 33633 sami 34

2

634 sanskrit 34635 serbian 35636 slovak 35637 slovenian 36638 sorbian 36639 spanish 37640 syriac 37641 thai 38642 tibetan 38643 ukrainian 38644 welsh 39

7 Modifying or extending captions date formats and language settings 39

8 Script-specific numbering 4081 General localization of numbering 4182 Non-Western decimal digits 4183 Non-Latin alphabetic numbering 42

9 Footnotes in right-to-left context 4491 Horizontal footnote position 4492 Footnote rule length and position 45

10 Calendars 45101 Hebrew calendar (hebrewcalsty) 45102 Islamic calendar (hijricalsty) 45103 Farsi (jalālī) calendar (farsicalsty) 46

11 Auxiliary commands 46

12 Accessing language information 47

13 Acknowledgements (by Franccedilois Charette) 48

14 More acknowledgements (by the current development team) 49

3

1 Introduction

Polyglossia is a package for facilitatingmultilingual typesetting with X ELATEX and(with some exceptions) LuaLATEX Basically it can be used as an alternative tobabel for performing the following tasks automatically

1 Loading the appropriate hyphenation patterns2 Setting the script and language tags of the current font (if possible and

available) via the package fontspec3 Switching to a font assigned by the user to a particular script or language4 Adjusting some typographical conventions according to the current lan-

guage (such as afterindent frenchindent spaces before or after punctu-ation marks etc)

5 Redefining all document strings (like ldquochapterrdquo ldquofigurerdquo ldquobibliographyrdquo)6 Adapting the formatting of dates (for non-Gregorian calendars via external

packages bundled with polyglossia currently the Hebrew Islamic andFarsi calendars are supported)

7 For languages that have their own numbering system modifying theformatting of numbers appropriately (this also includes redefining the al-phabetic sequence for non-Latin alphabets)1

8 Ensuring proper directionality if the document contains languages that arewritten from right to left (via the package bidi available separately)

Several features of babel that do not make sense in the X ETEX world (like fontencodings shorthands etc) are not supported Generally speaking polyglossiaaims to remain as compatible as possible with the fundamental features of babelwhile being cleaner light-weight and modern The package antomega has beenvery beneficial in our attempt to reach this objective

Requirements The current version of polyglossia makes use of some conveni-ent macros defined in the etoolbox package by Philipp Lehmann and JosephWRight Being designed for X ELATEX and LuaLATEX it obviously also relies onfontspec by Will RobeRtson For languages written from right to left it needsthe package bidi (for X ETEX) or luabidi (for LuaTEX) by Vafa Khalighi خليقي) (وفاand the bidi-tex GitHub Organisation Polyglossia also bundles three packagesfor calendaric computations (hebrewcal hijrical and farsical)

1This is done by bundled sub-packages such as arabicnumbers

4

2 Setting up multilingual documents

21 Activating languages

The default language of a document is specified by means of the commandsetdefaultlanguage[⟨options⟩]⟨lang⟩setdefaultlanguage

(or equivalently setmainlanguage) Secondary languages are specified withsetmainlanguage

setotherlanguage[⟨options⟩]⟨lang⟩setotherlanguage

All these commands allow you to set language-specific options2 It is also pos-sible to load a series of secondary languages at once (but without options) using

setotherlanguages⟨lang1⟩⟨lang2⟩⟨lang3⟩⟨hellip⟩setotherlanguages

All language-specific options can be modified locally by means of the language-switching commands described in section 3

Note In general it is advisable to activate the languages after all packages havebeen loaded This is particularly important if you use right-to-left scripts or lan-guages with babel shorthands

22 Supported languages

Table 1 lists all languages currently supported Those in red have specific optionsandor commands that are explained in section 6 below

Version Notes The support for Amharic larr should be considered an experi-v101

mental attempt to port the package ethiop feedback is welcome Version 111larrv111

added support for Asturian Lithuanian and Urdu Version 12 larr introducedv120

Armenian Occitan Bengali Lao Malayalam Marathi Tamil Telugu and Turk-men3 Version 143 larr brought basic support for Japanese (this is considered

v143experimental feedback is appreciated) In version 145 larr support for Kurd-

v145ish and Mongolian as well as some new variants (Canadian French and Eng-lish) have been added Furthermore for consistency reasons some languagehave been renamed (farsirarrpersian friulanrarrfriulianmagyarrarrhungarian por-tugesrarrportuguese saminrarrsami) or merged (bahasaibahasamrarrmalay brazilportugesrarrportuguese lsorbianusorbianrarrsorbian irishscottishrarrgaelic norsknynorskrarrnorwegian) The old names are still supported for backwards com-patibility reasons Version 146larr introduces support for Afrikaans Belarusian

v146Bosnian and Georgian

2Section 6 documents these options for the respective languages3See acknowledgements at the end for due credit to the various contributors

5

Table 1 Languages currently supported in polyglossia

afrikaans danish hungarian marathi slovenianalbanian divehi icelandic mongolian sorbianamharic dutch interlingua nko spanisharabic english italian norwegian swedisharmenian esperanto japanese occitan syriacasturian estonian kannada persian tamilbasque finnish khmer piedmontese telugubelarusian french korean polish thaibengali friulian kurdish portuguese tibetanbosnian gaelic lao romanian turkishbreton galician latin romansh turkmenbulgarian georgian latvian russian ukrainiancatalan german lithuanian sami urducoptic greek macedonian sanskrit vietnamesecroatian hebrew malay serbian welshczech hindi malayalam slovak

23 Relation to and use of Babel language names

If you are familiar with the babel package you will note that polyglossiarsquos lan-guage naming slightly differs Whereas babel has a unique name for each lan-guage variety (eg american and british) polyglossia differentiates language vari-eties via language options (eg english variant=american)

Furthermore babel sometimes uses abbreviated language names (eg ba-hasam for Bahasa Malayu) as well as endonyms ie language names comingfrom the designated languages (such as bahasa canadien or magyar) As op-posed to this polyglossia always uses spelled-out (lower-cased) English languagenames Please refer to table 2 for the differing language names in both packages

For convenience reasons polyglossia also supports the use of babel nameslarrv146

(for the few justified exceptions please refer to the notes in table 2) Thebabel names listed in table 2 can be used instead of the corresponding poly-glossia nameoptions in setdefaultlanguage and setotherlanguage as wellas in the polyglossia and babel language switching commandsenvironmentsdocumented in section 31 and 32 (eg textaustrian is synonymous totextgerman[variant=austrianspelling=old]) However unless you havespecial reasons we strongly encourage you to use the polyglossia names

6

Table 2 Babel-polyglossia language name matching

Babel name Polyglossia name Polyglossia options

acadien french variant=acadianamerican english variant=american [default]australian english variant=australianaustrian german variant=austrian spelling=oldbahasa malay variant=indonesian [default]bahasam malay variant=malaysianbrazil portuguese variant=brazilianbritish english variant=britishcanadian english variant=canadiancanadien french variant=canadianclassiclatina latin variant=classicfarsi persianecclesiasticlatinb latin variant=ecclesiasticfriulan friuliangermanc german spelling=oldirish gaelic variant=irish [default]kurmanji kurdish variant=kurmanjilowersorbian sorbian variant=lowermagyar hungarianmedievallatind latin variant=medievalnaustrian german variant=austriannewzealand english variant=newzealandngerman german variant=german [default]norsk norwegian variant=bokmalnswissgerman german variant=swissnynorsk norwegian variant=nynorsk [default]polutonikogreek greek variant=polytonicportuges portuguese variant=portuguese [default]samin samiscottish gaelic variant=scottishserbianc serbian script=Cyrillicslovene slovenianspanishmx spanish variant=mexicanswissgerman german variant=swiss spelling=olduppersorbian sorbian variant=upper [default]

aIn babel currently only selectable via dot modifier (latinclassic)bIn babel currently only selectable via dot modifier (latinecclesiastic)cDue to the name conflict only available in polyglossia as germanb (which is a babel synonym)dIn babel currently only selectable via dot modifier (latinmedieval)

7

24 Using IETF language tags

Polyglossia larr also supports the use of language tags that conform to thev147

IETF BCP-47 Best Current Practice4 Thus you can use tags such as en-GB(for British English) or de-AT-1901 (for Austrian German old spelling) insetdefaultlanguage and setotherlanguage as well as in the language switch-ing command textlang⟨tag⟩ the environment beginlang⟨tag⟩ hellipendlang and the babel language switching commandsenvironments docu-mented in section 32 Table 3 lists the currently supported tags

Table 3 BCP47-polyglossia language name matching

BCP-47 tag Polyglossia name Polyglossia options

aeb arabic locale=tunisiaaf afrikaansafb arabic locale=defaultam amharicapd arabic locale=defaultar arabicar-IQ arabic locale=mashriqar-JO arabic locale=mashriqar-LB arabic locale=mashriqar-MR arabic locale=mauritaniaar-PS arabic locale=mashriqar-SY arabic locale=mashriqar-YE arabic locale=defaultarq arabic locale=algeriaary arabic locale=moroccoarz arabic locale=defaultast asturianayl arabic locale=libyabe belarusianbe-tarask belarusian spelling=classicbg bulgarianbn bengalibo tibetanbr bretonbs bosnianca catalan

4Please refer to httpstoolsietforghtmlbcp47 and httpsenwikipediaorgwikiIETF_language_tag for details

8

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

ckb kurdish variant=sorani [default]ckb-Arab kurdish variant=sorani script=Arabic [default]ckb-Latn kurdish variant=sorani script=Latincop copticcy welshcz czechda danishde germande-AT german variant=austrian spelling=newde-AT-1901 german variant=austrian spelling=oldde-AT-1996 german variant=austrian spelling=newde-CH german variant=swiss spelling=newde-CH-1901 german variant=swiss spelling=oldde-CH-1996 german variant=swiss spelling=newde-DE german variant=german spelling=newde-DE-1901 german variant=german spelling=oldde-DE-1996 german variant=german spelling=new [default]de-Latf german script=blackletterde-Latf-AT german variant=austrian spelling=new script=blackletterde-Latf-AT-1901 german variant=austrian spelling=old script=blackletterde-Latf-AT-1996 german variant=austrian spelling=new script=blackletterde-Latf-CH german variant=swiss spelling=new script=blackletterde-Latf-CH-1901 german variant=swiss spelling=old script=blackletterde-Latf-CH-1996 german variant=swiss spelling=new script=blackletterde-Latf-DE german variant=german spelling=new script=blackletterde-Latf-DE-1901 german variant=german spelling=old script=blackletterde-Latf-DE-1996 german variant=german spelling=new script=blackletterdsb sorbian variant=lowerdv divehiel greekel-monoton greek variant=monotonic [default]el-polyton greek varant=polytonicen englishen-AU english variant=australianen-CA english variant=canadianen-GB english variant=britishen-NZ english variant=newzealanden-US english variant=us [default]eo esperanto

9

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

es spanishes-ES spanish variant=spanish [default]es-MX spanish variant=mexicanet estonianeu basquefa persianfi finnishfr frenchfr-CA french variant=canadianfr-CH french variant=swissfr-FR french variant=french [default]fur friulianga gaelic variant=irish [default]gd gaelic variant=scottishgl galiciangrc greek variant=ancienthe hebrewhi hindihr croatianhsb sorbian variant=upper [default]hu hungarianhy armeniania interlinguaid malay variant=indonesianis icelandicit italianja japaneseka georgiankm khmerkmr kurdish variant=kurmanjikmr-Arab kurdish variant=kurmanji script=Arabickmr-Latn kurdish variant=kurmanji script=Latinkn kannadako koreanku kurdishku-Arab kurdish script=Arabicku-Latn kurdish script=Latinla latinla-x-classic latin variant=classic

10

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

la-x-ecclesia latin variant=ecclesiasticla-x-medieval latin variant=medievallo laolt lithuanianlv latvianmk macedonianml malayalammn mongolianmr marathinb norwegian variant=bokmalnko nkonl dutchnn norwegian variant=nynorsk [default]oc occitanpl polishpms piedmontesept portuguesept-BR portuguese variant=brazilianpt-PT portuguese variant=portuguese [default]rm romanshro romanianru russianru-luna1918 russian spelling=modern [default]ru-petr1708 russian spelling=oldsa sanskritsa-Beng sanskrit script=Bengalisa-Deva sanskrit script=Devanagari [default]sa-Gujr sanskrit script=Gujaratisa-Knda sanskrit script=Kannadasa-Mlym sanskrit script=Malayalamsa-Telu sanskrit script=Teluguse samisk slovaksl sloveniansq albaniansr serbiansr-Cyrl serbian script=Cyrillicsr-Latn serbian script=Latin [default]sv swedish

11

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 3: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

634 sanskrit 34635 serbian 35636 slovak 35637 slovenian 36638 sorbian 36639 spanish 37640 syriac 37641 thai 38642 tibetan 38643 ukrainian 38644 welsh 39

7 Modifying or extending captions date formats and language settings 39

8 Script-specific numbering 4081 General localization of numbering 4182 Non-Western decimal digits 4183 Non-Latin alphabetic numbering 42

9 Footnotes in right-to-left context 4491 Horizontal footnote position 4492 Footnote rule length and position 45

10 Calendars 45101 Hebrew calendar (hebrewcalsty) 45102 Islamic calendar (hijricalsty) 45103 Farsi (jalālī) calendar (farsicalsty) 46

11 Auxiliary commands 46

12 Accessing language information 47

13 Acknowledgements (by Franccedilois Charette) 48

14 More acknowledgements (by the current development team) 49

3

1 Introduction

Polyglossia is a package for facilitatingmultilingual typesetting with X ELATEX and(with some exceptions) LuaLATEX Basically it can be used as an alternative tobabel for performing the following tasks automatically

1 Loading the appropriate hyphenation patterns2 Setting the script and language tags of the current font (if possible and

available) via the package fontspec3 Switching to a font assigned by the user to a particular script or language4 Adjusting some typographical conventions according to the current lan-

guage (such as afterindent frenchindent spaces before or after punctu-ation marks etc)

5 Redefining all document strings (like ldquochapterrdquo ldquofigurerdquo ldquobibliographyrdquo)6 Adapting the formatting of dates (for non-Gregorian calendars via external

packages bundled with polyglossia currently the Hebrew Islamic andFarsi calendars are supported)

7 For languages that have their own numbering system modifying theformatting of numbers appropriately (this also includes redefining the al-phabetic sequence for non-Latin alphabets)1

8 Ensuring proper directionality if the document contains languages that arewritten from right to left (via the package bidi available separately)

Several features of babel that do not make sense in the X ETEX world (like fontencodings shorthands etc) are not supported Generally speaking polyglossiaaims to remain as compatible as possible with the fundamental features of babelwhile being cleaner light-weight and modern The package antomega has beenvery beneficial in our attempt to reach this objective

Requirements The current version of polyglossia makes use of some conveni-ent macros defined in the etoolbox package by Philipp Lehmann and JosephWRight Being designed for X ELATEX and LuaLATEX it obviously also relies onfontspec by Will RobeRtson For languages written from right to left it needsthe package bidi (for X ETEX) or luabidi (for LuaTEX) by Vafa Khalighi خليقي) (وفاand the bidi-tex GitHub Organisation Polyglossia also bundles three packagesfor calendaric computations (hebrewcal hijrical and farsical)

1This is done by bundled sub-packages such as arabicnumbers

4

2 Setting up multilingual documents

21 Activating languages

The default language of a document is specified by means of the commandsetdefaultlanguage[⟨options⟩]⟨lang⟩setdefaultlanguage

(or equivalently setmainlanguage) Secondary languages are specified withsetmainlanguage

setotherlanguage[⟨options⟩]⟨lang⟩setotherlanguage

All these commands allow you to set language-specific options2 It is also pos-sible to load a series of secondary languages at once (but without options) using

setotherlanguages⟨lang1⟩⟨lang2⟩⟨lang3⟩⟨hellip⟩setotherlanguages

All language-specific options can be modified locally by means of the language-switching commands described in section 3

Note In general it is advisable to activate the languages after all packages havebeen loaded This is particularly important if you use right-to-left scripts or lan-guages with babel shorthands

22 Supported languages

Table 1 lists all languages currently supported Those in red have specific optionsandor commands that are explained in section 6 below

Version Notes The support for Amharic larr should be considered an experi-v101

mental attempt to port the package ethiop feedback is welcome Version 111larrv111

added support for Asturian Lithuanian and Urdu Version 12 larr introducedv120

Armenian Occitan Bengali Lao Malayalam Marathi Tamil Telugu and Turk-men3 Version 143 larr brought basic support for Japanese (this is considered

v143experimental feedback is appreciated) In version 145 larr support for Kurd-

v145ish and Mongolian as well as some new variants (Canadian French and Eng-lish) have been added Furthermore for consistency reasons some languagehave been renamed (farsirarrpersian friulanrarrfriulianmagyarrarrhungarian por-tugesrarrportuguese saminrarrsami) or merged (bahasaibahasamrarrmalay brazilportugesrarrportuguese lsorbianusorbianrarrsorbian irishscottishrarrgaelic norsknynorskrarrnorwegian) The old names are still supported for backwards com-patibility reasons Version 146larr introduces support for Afrikaans Belarusian

v146Bosnian and Georgian

2Section 6 documents these options for the respective languages3See acknowledgements at the end for due credit to the various contributors

5

Table 1 Languages currently supported in polyglossia

afrikaans danish hungarian marathi slovenianalbanian divehi icelandic mongolian sorbianamharic dutch interlingua nko spanisharabic english italian norwegian swedisharmenian esperanto japanese occitan syriacasturian estonian kannada persian tamilbasque finnish khmer piedmontese telugubelarusian french korean polish thaibengali friulian kurdish portuguese tibetanbosnian gaelic lao romanian turkishbreton galician latin romansh turkmenbulgarian georgian latvian russian ukrainiancatalan german lithuanian sami urducoptic greek macedonian sanskrit vietnamesecroatian hebrew malay serbian welshczech hindi malayalam slovak

23 Relation to and use of Babel language names

If you are familiar with the babel package you will note that polyglossiarsquos lan-guage naming slightly differs Whereas babel has a unique name for each lan-guage variety (eg american and british) polyglossia differentiates language vari-eties via language options (eg english variant=american)

Furthermore babel sometimes uses abbreviated language names (eg ba-hasam for Bahasa Malayu) as well as endonyms ie language names comingfrom the designated languages (such as bahasa canadien or magyar) As op-posed to this polyglossia always uses spelled-out (lower-cased) English languagenames Please refer to table 2 for the differing language names in both packages

For convenience reasons polyglossia also supports the use of babel nameslarrv146

(for the few justified exceptions please refer to the notes in table 2) Thebabel names listed in table 2 can be used instead of the corresponding poly-glossia nameoptions in setdefaultlanguage and setotherlanguage as wellas in the polyglossia and babel language switching commandsenvironmentsdocumented in section 31 and 32 (eg textaustrian is synonymous totextgerman[variant=austrianspelling=old]) However unless you havespecial reasons we strongly encourage you to use the polyglossia names

6

Table 2 Babel-polyglossia language name matching

Babel name Polyglossia name Polyglossia options

acadien french variant=acadianamerican english variant=american [default]australian english variant=australianaustrian german variant=austrian spelling=oldbahasa malay variant=indonesian [default]bahasam malay variant=malaysianbrazil portuguese variant=brazilianbritish english variant=britishcanadian english variant=canadiancanadien french variant=canadianclassiclatina latin variant=classicfarsi persianecclesiasticlatinb latin variant=ecclesiasticfriulan friuliangermanc german spelling=oldirish gaelic variant=irish [default]kurmanji kurdish variant=kurmanjilowersorbian sorbian variant=lowermagyar hungarianmedievallatind latin variant=medievalnaustrian german variant=austriannewzealand english variant=newzealandngerman german variant=german [default]norsk norwegian variant=bokmalnswissgerman german variant=swissnynorsk norwegian variant=nynorsk [default]polutonikogreek greek variant=polytonicportuges portuguese variant=portuguese [default]samin samiscottish gaelic variant=scottishserbianc serbian script=Cyrillicslovene slovenianspanishmx spanish variant=mexicanswissgerman german variant=swiss spelling=olduppersorbian sorbian variant=upper [default]

aIn babel currently only selectable via dot modifier (latinclassic)bIn babel currently only selectable via dot modifier (latinecclesiastic)cDue to the name conflict only available in polyglossia as germanb (which is a babel synonym)dIn babel currently only selectable via dot modifier (latinmedieval)

7

24 Using IETF language tags

Polyglossia larr also supports the use of language tags that conform to thev147

IETF BCP-47 Best Current Practice4 Thus you can use tags such as en-GB(for British English) or de-AT-1901 (for Austrian German old spelling) insetdefaultlanguage and setotherlanguage as well as in the language switch-ing command textlang⟨tag⟩ the environment beginlang⟨tag⟩ hellipendlang and the babel language switching commandsenvironments docu-mented in section 32 Table 3 lists the currently supported tags

Table 3 BCP47-polyglossia language name matching

BCP-47 tag Polyglossia name Polyglossia options

aeb arabic locale=tunisiaaf afrikaansafb arabic locale=defaultam amharicapd arabic locale=defaultar arabicar-IQ arabic locale=mashriqar-JO arabic locale=mashriqar-LB arabic locale=mashriqar-MR arabic locale=mauritaniaar-PS arabic locale=mashriqar-SY arabic locale=mashriqar-YE arabic locale=defaultarq arabic locale=algeriaary arabic locale=moroccoarz arabic locale=defaultast asturianayl arabic locale=libyabe belarusianbe-tarask belarusian spelling=classicbg bulgarianbn bengalibo tibetanbr bretonbs bosnianca catalan

4Please refer to httpstoolsietforghtmlbcp47 and httpsenwikipediaorgwikiIETF_language_tag for details

8

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

ckb kurdish variant=sorani [default]ckb-Arab kurdish variant=sorani script=Arabic [default]ckb-Latn kurdish variant=sorani script=Latincop copticcy welshcz czechda danishde germande-AT german variant=austrian spelling=newde-AT-1901 german variant=austrian spelling=oldde-AT-1996 german variant=austrian spelling=newde-CH german variant=swiss spelling=newde-CH-1901 german variant=swiss spelling=oldde-CH-1996 german variant=swiss spelling=newde-DE german variant=german spelling=newde-DE-1901 german variant=german spelling=oldde-DE-1996 german variant=german spelling=new [default]de-Latf german script=blackletterde-Latf-AT german variant=austrian spelling=new script=blackletterde-Latf-AT-1901 german variant=austrian spelling=old script=blackletterde-Latf-AT-1996 german variant=austrian spelling=new script=blackletterde-Latf-CH german variant=swiss spelling=new script=blackletterde-Latf-CH-1901 german variant=swiss spelling=old script=blackletterde-Latf-CH-1996 german variant=swiss spelling=new script=blackletterde-Latf-DE german variant=german spelling=new script=blackletterde-Latf-DE-1901 german variant=german spelling=old script=blackletterde-Latf-DE-1996 german variant=german spelling=new script=blackletterdsb sorbian variant=lowerdv divehiel greekel-monoton greek variant=monotonic [default]el-polyton greek varant=polytonicen englishen-AU english variant=australianen-CA english variant=canadianen-GB english variant=britishen-NZ english variant=newzealanden-US english variant=us [default]eo esperanto

9

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

es spanishes-ES spanish variant=spanish [default]es-MX spanish variant=mexicanet estonianeu basquefa persianfi finnishfr frenchfr-CA french variant=canadianfr-CH french variant=swissfr-FR french variant=french [default]fur friulianga gaelic variant=irish [default]gd gaelic variant=scottishgl galiciangrc greek variant=ancienthe hebrewhi hindihr croatianhsb sorbian variant=upper [default]hu hungarianhy armeniania interlinguaid malay variant=indonesianis icelandicit italianja japaneseka georgiankm khmerkmr kurdish variant=kurmanjikmr-Arab kurdish variant=kurmanji script=Arabickmr-Latn kurdish variant=kurmanji script=Latinkn kannadako koreanku kurdishku-Arab kurdish script=Arabicku-Latn kurdish script=Latinla latinla-x-classic latin variant=classic

10

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

la-x-ecclesia latin variant=ecclesiasticla-x-medieval latin variant=medievallo laolt lithuanianlv latvianmk macedonianml malayalammn mongolianmr marathinb norwegian variant=bokmalnko nkonl dutchnn norwegian variant=nynorsk [default]oc occitanpl polishpms piedmontesept portuguesept-BR portuguese variant=brazilianpt-PT portuguese variant=portuguese [default]rm romanshro romanianru russianru-luna1918 russian spelling=modern [default]ru-petr1708 russian spelling=oldsa sanskritsa-Beng sanskrit script=Bengalisa-Deva sanskrit script=Devanagari [default]sa-Gujr sanskrit script=Gujaratisa-Knda sanskrit script=Kannadasa-Mlym sanskrit script=Malayalamsa-Telu sanskrit script=Teluguse samisk slovaksl sloveniansq albaniansr serbiansr-Cyrl serbian script=Cyrillicsr-Latn serbian script=Latin [default]sv swedish

11

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 4: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

1 Introduction

Polyglossia is a package for facilitatingmultilingual typesetting with X ELATEX and(with some exceptions) LuaLATEX Basically it can be used as an alternative tobabel for performing the following tasks automatically

1 Loading the appropriate hyphenation patterns2 Setting the script and language tags of the current font (if possible and

available) via the package fontspec3 Switching to a font assigned by the user to a particular script or language4 Adjusting some typographical conventions according to the current lan-

guage (such as afterindent frenchindent spaces before or after punctu-ation marks etc)

5 Redefining all document strings (like ldquochapterrdquo ldquofigurerdquo ldquobibliographyrdquo)6 Adapting the formatting of dates (for non-Gregorian calendars via external

packages bundled with polyglossia currently the Hebrew Islamic andFarsi calendars are supported)

7 For languages that have their own numbering system modifying theformatting of numbers appropriately (this also includes redefining the al-phabetic sequence for non-Latin alphabets)1

8 Ensuring proper directionality if the document contains languages that arewritten from right to left (via the package bidi available separately)

Several features of babel that do not make sense in the X ETEX world (like fontencodings shorthands etc) are not supported Generally speaking polyglossiaaims to remain as compatible as possible with the fundamental features of babelwhile being cleaner light-weight and modern The package antomega has beenvery beneficial in our attempt to reach this objective

Requirements The current version of polyglossia makes use of some conveni-ent macros defined in the etoolbox package by Philipp Lehmann and JosephWRight Being designed for X ELATEX and LuaLATEX it obviously also relies onfontspec by Will RobeRtson For languages written from right to left it needsthe package bidi (for X ETEX) or luabidi (for LuaTEX) by Vafa Khalighi خليقي) (وفاand the bidi-tex GitHub Organisation Polyglossia also bundles three packagesfor calendaric computations (hebrewcal hijrical and farsical)

1This is done by bundled sub-packages such as arabicnumbers

4

2 Setting up multilingual documents

21 Activating languages

The default language of a document is specified by means of the commandsetdefaultlanguage[⟨options⟩]⟨lang⟩setdefaultlanguage

(or equivalently setmainlanguage) Secondary languages are specified withsetmainlanguage

setotherlanguage[⟨options⟩]⟨lang⟩setotherlanguage

All these commands allow you to set language-specific options2 It is also pos-sible to load a series of secondary languages at once (but without options) using

setotherlanguages⟨lang1⟩⟨lang2⟩⟨lang3⟩⟨hellip⟩setotherlanguages

All language-specific options can be modified locally by means of the language-switching commands described in section 3

Note In general it is advisable to activate the languages after all packages havebeen loaded This is particularly important if you use right-to-left scripts or lan-guages with babel shorthands

22 Supported languages

Table 1 lists all languages currently supported Those in red have specific optionsandor commands that are explained in section 6 below

Version Notes The support for Amharic larr should be considered an experi-v101

mental attempt to port the package ethiop feedback is welcome Version 111larrv111

added support for Asturian Lithuanian and Urdu Version 12 larr introducedv120

Armenian Occitan Bengali Lao Malayalam Marathi Tamil Telugu and Turk-men3 Version 143 larr brought basic support for Japanese (this is considered

v143experimental feedback is appreciated) In version 145 larr support for Kurd-

v145ish and Mongolian as well as some new variants (Canadian French and Eng-lish) have been added Furthermore for consistency reasons some languagehave been renamed (farsirarrpersian friulanrarrfriulianmagyarrarrhungarian por-tugesrarrportuguese saminrarrsami) or merged (bahasaibahasamrarrmalay brazilportugesrarrportuguese lsorbianusorbianrarrsorbian irishscottishrarrgaelic norsknynorskrarrnorwegian) The old names are still supported for backwards com-patibility reasons Version 146larr introduces support for Afrikaans Belarusian

v146Bosnian and Georgian

2Section 6 documents these options for the respective languages3See acknowledgements at the end for due credit to the various contributors

5

Table 1 Languages currently supported in polyglossia

afrikaans danish hungarian marathi slovenianalbanian divehi icelandic mongolian sorbianamharic dutch interlingua nko spanisharabic english italian norwegian swedisharmenian esperanto japanese occitan syriacasturian estonian kannada persian tamilbasque finnish khmer piedmontese telugubelarusian french korean polish thaibengali friulian kurdish portuguese tibetanbosnian gaelic lao romanian turkishbreton galician latin romansh turkmenbulgarian georgian latvian russian ukrainiancatalan german lithuanian sami urducoptic greek macedonian sanskrit vietnamesecroatian hebrew malay serbian welshczech hindi malayalam slovak

23 Relation to and use of Babel language names

If you are familiar with the babel package you will note that polyglossiarsquos lan-guage naming slightly differs Whereas babel has a unique name for each lan-guage variety (eg american and british) polyglossia differentiates language vari-eties via language options (eg english variant=american)

Furthermore babel sometimes uses abbreviated language names (eg ba-hasam for Bahasa Malayu) as well as endonyms ie language names comingfrom the designated languages (such as bahasa canadien or magyar) As op-posed to this polyglossia always uses spelled-out (lower-cased) English languagenames Please refer to table 2 for the differing language names in both packages

For convenience reasons polyglossia also supports the use of babel nameslarrv146

(for the few justified exceptions please refer to the notes in table 2) Thebabel names listed in table 2 can be used instead of the corresponding poly-glossia nameoptions in setdefaultlanguage and setotherlanguage as wellas in the polyglossia and babel language switching commandsenvironmentsdocumented in section 31 and 32 (eg textaustrian is synonymous totextgerman[variant=austrianspelling=old]) However unless you havespecial reasons we strongly encourage you to use the polyglossia names

6

Table 2 Babel-polyglossia language name matching

Babel name Polyglossia name Polyglossia options

acadien french variant=acadianamerican english variant=american [default]australian english variant=australianaustrian german variant=austrian spelling=oldbahasa malay variant=indonesian [default]bahasam malay variant=malaysianbrazil portuguese variant=brazilianbritish english variant=britishcanadian english variant=canadiancanadien french variant=canadianclassiclatina latin variant=classicfarsi persianecclesiasticlatinb latin variant=ecclesiasticfriulan friuliangermanc german spelling=oldirish gaelic variant=irish [default]kurmanji kurdish variant=kurmanjilowersorbian sorbian variant=lowermagyar hungarianmedievallatind latin variant=medievalnaustrian german variant=austriannewzealand english variant=newzealandngerman german variant=german [default]norsk norwegian variant=bokmalnswissgerman german variant=swissnynorsk norwegian variant=nynorsk [default]polutonikogreek greek variant=polytonicportuges portuguese variant=portuguese [default]samin samiscottish gaelic variant=scottishserbianc serbian script=Cyrillicslovene slovenianspanishmx spanish variant=mexicanswissgerman german variant=swiss spelling=olduppersorbian sorbian variant=upper [default]

aIn babel currently only selectable via dot modifier (latinclassic)bIn babel currently only selectable via dot modifier (latinecclesiastic)cDue to the name conflict only available in polyglossia as germanb (which is a babel synonym)dIn babel currently only selectable via dot modifier (latinmedieval)

7

24 Using IETF language tags

Polyglossia larr also supports the use of language tags that conform to thev147

IETF BCP-47 Best Current Practice4 Thus you can use tags such as en-GB(for British English) or de-AT-1901 (for Austrian German old spelling) insetdefaultlanguage and setotherlanguage as well as in the language switch-ing command textlang⟨tag⟩ the environment beginlang⟨tag⟩ hellipendlang and the babel language switching commandsenvironments docu-mented in section 32 Table 3 lists the currently supported tags

Table 3 BCP47-polyglossia language name matching

BCP-47 tag Polyglossia name Polyglossia options

aeb arabic locale=tunisiaaf afrikaansafb arabic locale=defaultam amharicapd arabic locale=defaultar arabicar-IQ arabic locale=mashriqar-JO arabic locale=mashriqar-LB arabic locale=mashriqar-MR arabic locale=mauritaniaar-PS arabic locale=mashriqar-SY arabic locale=mashriqar-YE arabic locale=defaultarq arabic locale=algeriaary arabic locale=moroccoarz arabic locale=defaultast asturianayl arabic locale=libyabe belarusianbe-tarask belarusian spelling=classicbg bulgarianbn bengalibo tibetanbr bretonbs bosnianca catalan

4Please refer to httpstoolsietforghtmlbcp47 and httpsenwikipediaorgwikiIETF_language_tag for details

8

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

ckb kurdish variant=sorani [default]ckb-Arab kurdish variant=sorani script=Arabic [default]ckb-Latn kurdish variant=sorani script=Latincop copticcy welshcz czechda danishde germande-AT german variant=austrian spelling=newde-AT-1901 german variant=austrian spelling=oldde-AT-1996 german variant=austrian spelling=newde-CH german variant=swiss spelling=newde-CH-1901 german variant=swiss spelling=oldde-CH-1996 german variant=swiss spelling=newde-DE german variant=german spelling=newde-DE-1901 german variant=german spelling=oldde-DE-1996 german variant=german spelling=new [default]de-Latf german script=blackletterde-Latf-AT german variant=austrian spelling=new script=blackletterde-Latf-AT-1901 german variant=austrian spelling=old script=blackletterde-Latf-AT-1996 german variant=austrian spelling=new script=blackletterde-Latf-CH german variant=swiss spelling=new script=blackletterde-Latf-CH-1901 german variant=swiss spelling=old script=blackletterde-Latf-CH-1996 german variant=swiss spelling=new script=blackletterde-Latf-DE german variant=german spelling=new script=blackletterde-Latf-DE-1901 german variant=german spelling=old script=blackletterde-Latf-DE-1996 german variant=german spelling=new script=blackletterdsb sorbian variant=lowerdv divehiel greekel-monoton greek variant=monotonic [default]el-polyton greek varant=polytonicen englishen-AU english variant=australianen-CA english variant=canadianen-GB english variant=britishen-NZ english variant=newzealanden-US english variant=us [default]eo esperanto

9

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

es spanishes-ES spanish variant=spanish [default]es-MX spanish variant=mexicanet estonianeu basquefa persianfi finnishfr frenchfr-CA french variant=canadianfr-CH french variant=swissfr-FR french variant=french [default]fur friulianga gaelic variant=irish [default]gd gaelic variant=scottishgl galiciangrc greek variant=ancienthe hebrewhi hindihr croatianhsb sorbian variant=upper [default]hu hungarianhy armeniania interlinguaid malay variant=indonesianis icelandicit italianja japaneseka georgiankm khmerkmr kurdish variant=kurmanjikmr-Arab kurdish variant=kurmanji script=Arabickmr-Latn kurdish variant=kurmanji script=Latinkn kannadako koreanku kurdishku-Arab kurdish script=Arabicku-Latn kurdish script=Latinla latinla-x-classic latin variant=classic

10

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

la-x-ecclesia latin variant=ecclesiasticla-x-medieval latin variant=medievallo laolt lithuanianlv latvianmk macedonianml malayalammn mongolianmr marathinb norwegian variant=bokmalnko nkonl dutchnn norwegian variant=nynorsk [default]oc occitanpl polishpms piedmontesept portuguesept-BR portuguese variant=brazilianpt-PT portuguese variant=portuguese [default]rm romanshro romanianru russianru-luna1918 russian spelling=modern [default]ru-petr1708 russian spelling=oldsa sanskritsa-Beng sanskrit script=Bengalisa-Deva sanskrit script=Devanagari [default]sa-Gujr sanskrit script=Gujaratisa-Knda sanskrit script=Kannadasa-Mlym sanskrit script=Malayalamsa-Telu sanskrit script=Teluguse samisk slovaksl sloveniansq albaniansr serbiansr-Cyrl serbian script=Cyrillicsr-Latn serbian script=Latin [default]sv swedish

11

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 5: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

2 Setting up multilingual documents

21 Activating languages

The default language of a document is specified by means of the commandsetdefaultlanguage[⟨options⟩]⟨lang⟩setdefaultlanguage

(or equivalently setmainlanguage) Secondary languages are specified withsetmainlanguage

setotherlanguage[⟨options⟩]⟨lang⟩setotherlanguage

All these commands allow you to set language-specific options2 It is also pos-sible to load a series of secondary languages at once (but without options) using

setotherlanguages⟨lang1⟩⟨lang2⟩⟨lang3⟩⟨hellip⟩setotherlanguages

All language-specific options can be modified locally by means of the language-switching commands described in section 3

Note In general it is advisable to activate the languages after all packages havebeen loaded This is particularly important if you use right-to-left scripts or lan-guages with babel shorthands

22 Supported languages

Table 1 lists all languages currently supported Those in red have specific optionsandor commands that are explained in section 6 below

Version Notes The support for Amharic larr should be considered an experi-v101

mental attempt to port the package ethiop feedback is welcome Version 111larrv111

added support for Asturian Lithuanian and Urdu Version 12 larr introducedv120

Armenian Occitan Bengali Lao Malayalam Marathi Tamil Telugu and Turk-men3 Version 143 larr brought basic support for Japanese (this is considered

v143experimental feedback is appreciated) In version 145 larr support for Kurd-

v145ish and Mongolian as well as some new variants (Canadian French and Eng-lish) have been added Furthermore for consistency reasons some languagehave been renamed (farsirarrpersian friulanrarrfriulianmagyarrarrhungarian por-tugesrarrportuguese saminrarrsami) or merged (bahasaibahasamrarrmalay brazilportugesrarrportuguese lsorbianusorbianrarrsorbian irishscottishrarrgaelic norsknynorskrarrnorwegian) The old names are still supported for backwards com-patibility reasons Version 146larr introduces support for Afrikaans Belarusian

v146Bosnian and Georgian

2Section 6 documents these options for the respective languages3See acknowledgements at the end for due credit to the various contributors

5

Table 1 Languages currently supported in polyglossia

afrikaans danish hungarian marathi slovenianalbanian divehi icelandic mongolian sorbianamharic dutch interlingua nko spanisharabic english italian norwegian swedisharmenian esperanto japanese occitan syriacasturian estonian kannada persian tamilbasque finnish khmer piedmontese telugubelarusian french korean polish thaibengali friulian kurdish portuguese tibetanbosnian gaelic lao romanian turkishbreton galician latin romansh turkmenbulgarian georgian latvian russian ukrainiancatalan german lithuanian sami urducoptic greek macedonian sanskrit vietnamesecroatian hebrew malay serbian welshczech hindi malayalam slovak

23 Relation to and use of Babel language names

If you are familiar with the babel package you will note that polyglossiarsquos lan-guage naming slightly differs Whereas babel has a unique name for each lan-guage variety (eg american and british) polyglossia differentiates language vari-eties via language options (eg english variant=american)

Furthermore babel sometimes uses abbreviated language names (eg ba-hasam for Bahasa Malayu) as well as endonyms ie language names comingfrom the designated languages (such as bahasa canadien or magyar) As op-posed to this polyglossia always uses spelled-out (lower-cased) English languagenames Please refer to table 2 for the differing language names in both packages

For convenience reasons polyglossia also supports the use of babel nameslarrv146

(for the few justified exceptions please refer to the notes in table 2) Thebabel names listed in table 2 can be used instead of the corresponding poly-glossia nameoptions in setdefaultlanguage and setotherlanguage as wellas in the polyglossia and babel language switching commandsenvironmentsdocumented in section 31 and 32 (eg textaustrian is synonymous totextgerman[variant=austrianspelling=old]) However unless you havespecial reasons we strongly encourage you to use the polyglossia names

6

Table 2 Babel-polyglossia language name matching

Babel name Polyglossia name Polyglossia options

acadien french variant=acadianamerican english variant=american [default]australian english variant=australianaustrian german variant=austrian spelling=oldbahasa malay variant=indonesian [default]bahasam malay variant=malaysianbrazil portuguese variant=brazilianbritish english variant=britishcanadian english variant=canadiancanadien french variant=canadianclassiclatina latin variant=classicfarsi persianecclesiasticlatinb latin variant=ecclesiasticfriulan friuliangermanc german spelling=oldirish gaelic variant=irish [default]kurmanji kurdish variant=kurmanjilowersorbian sorbian variant=lowermagyar hungarianmedievallatind latin variant=medievalnaustrian german variant=austriannewzealand english variant=newzealandngerman german variant=german [default]norsk norwegian variant=bokmalnswissgerman german variant=swissnynorsk norwegian variant=nynorsk [default]polutonikogreek greek variant=polytonicportuges portuguese variant=portuguese [default]samin samiscottish gaelic variant=scottishserbianc serbian script=Cyrillicslovene slovenianspanishmx spanish variant=mexicanswissgerman german variant=swiss spelling=olduppersorbian sorbian variant=upper [default]

aIn babel currently only selectable via dot modifier (latinclassic)bIn babel currently only selectable via dot modifier (latinecclesiastic)cDue to the name conflict only available in polyglossia as germanb (which is a babel synonym)dIn babel currently only selectable via dot modifier (latinmedieval)

7

24 Using IETF language tags

Polyglossia larr also supports the use of language tags that conform to thev147

IETF BCP-47 Best Current Practice4 Thus you can use tags such as en-GB(for British English) or de-AT-1901 (for Austrian German old spelling) insetdefaultlanguage and setotherlanguage as well as in the language switch-ing command textlang⟨tag⟩ the environment beginlang⟨tag⟩ hellipendlang and the babel language switching commandsenvironments docu-mented in section 32 Table 3 lists the currently supported tags

Table 3 BCP47-polyglossia language name matching

BCP-47 tag Polyglossia name Polyglossia options

aeb arabic locale=tunisiaaf afrikaansafb arabic locale=defaultam amharicapd arabic locale=defaultar arabicar-IQ arabic locale=mashriqar-JO arabic locale=mashriqar-LB arabic locale=mashriqar-MR arabic locale=mauritaniaar-PS arabic locale=mashriqar-SY arabic locale=mashriqar-YE arabic locale=defaultarq arabic locale=algeriaary arabic locale=moroccoarz arabic locale=defaultast asturianayl arabic locale=libyabe belarusianbe-tarask belarusian spelling=classicbg bulgarianbn bengalibo tibetanbr bretonbs bosnianca catalan

4Please refer to httpstoolsietforghtmlbcp47 and httpsenwikipediaorgwikiIETF_language_tag for details

8

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

ckb kurdish variant=sorani [default]ckb-Arab kurdish variant=sorani script=Arabic [default]ckb-Latn kurdish variant=sorani script=Latincop copticcy welshcz czechda danishde germande-AT german variant=austrian spelling=newde-AT-1901 german variant=austrian spelling=oldde-AT-1996 german variant=austrian spelling=newde-CH german variant=swiss spelling=newde-CH-1901 german variant=swiss spelling=oldde-CH-1996 german variant=swiss spelling=newde-DE german variant=german spelling=newde-DE-1901 german variant=german spelling=oldde-DE-1996 german variant=german spelling=new [default]de-Latf german script=blackletterde-Latf-AT german variant=austrian spelling=new script=blackletterde-Latf-AT-1901 german variant=austrian spelling=old script=blackletterde-Latf-AT-1996 german variant=austrian spelling=new script=blackletterde-Latf-CH german variant=swiss spelling=new script=blackletterde-Latf-CH-1901 german variant=swiss spelling=old script=blackletterde-Latf-CH-1996 german variant=swiss spelling=new script=blackletterde-Latf-DE german variant=german spelling=new script=blackletterde-Latf-DE-1901 german variant=german spelling=old script=blackletterde-Latf-DE-1996 german variant=german spelling=new script=blackletterdsb sorbian variant=lowerdv divehiel greekel-monoton greek variant=monotonic [default]el-polyton greek varant=polytonicen englishen-AU english variant=australianen-CA english variant=canadianen-GB english variant=britishen-NZ english variant=newzealanden-US english variant=us [default]eo esperanto

9

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

es spanishes-ES spanish variant=spanish [default]es-MX spanish variant=mexicanet estonianeu basquefa persianfi finnishfr frenchfr-CA french variant=canadianfr-CH french variant=swissfr-FR french variant=french [default]fur friulianga gaelic variant=irish [default]gd gaelic variant=scottishgl galiciangrc greek variant=ancienthe hebrewhi hindihr croatianhsb sorbian variant=upper [default]hu hungarianhy armeniania interlinguaid malay variant=indonesianis icelandicit italianja japaneseka georgiankm khmerkmr kurdish variant=kurmanjikmr-Arab kurdish variant=kurmanji script=Arabickmr-Latn kurdish variant=kurmanji script=Latinkn kannadako koreanku kurdishku-Arab kurdish script=Arabicku-Latn kurdish script=Latinla latinla-x-classic latin variant=classic

10

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

la-x-ecclesia latin variant=ecclesiasticla-x-medieval latin variant=medievallo laolt lithuanianlv latvianmk macedonianml malayalammn mongolianmr marathinb norwegian variant=bokmalnko nkonl dutchnn norwegian variant=nynorsk [default]oc occitanpl polishpms piedmontesept portuguesept-BR portuguese variant=brazilianpt-PT portuguese variant=portuguese [default]rm romanshro romanianru russianru-luna1918 russian spelling=modern [default]ru-petr1708 russian spelling=oldsa sanskritsa-Beng sanskrit script=Bengalisa-Deva sanskrit script=Devanagari [default]sa-Gujr sanskrit script=Gujaratisa-Knda sanskrit script=Kannadasa-Mlym sanskrit script=Malayalamsa-Telu sanskrit script=Teluguse samisk slovaksl sloveniansq albaniansr serbiansr-Cyrl serbian script=Cyrillicsr-Latn serbian script=Latin [default]sv swedish

11

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 6: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Table 1 Languages currently supported in polyglossia

afrikaans danish hungarian marathi slovenianalbanian divehi icelandic mongolian sorbianamharic dutch interlingua nko spanisharabic english italian norwegian swedisharmenian esperanto japanese occitan syriacasturian estonian kannada persian tamilbasque finnish khmer piedmontese telugubelarusian french korean polish thaibengali friulian kurdish portuguese tibetanbosnian gaelic lao romanian turkishbreton galician latin romansh turkmenbulgarian georgian latvian russian ukrainiancatalan german lithuanian sami urducoptic greek macedonian sanskrit vietnamesecroatian hebrew malay serbian welshczech hindi malayalam slovak

23 Relation to and use of Babel language names

If you are familiar with the babel package you will note that polyglossiarsquos lan-guage naming slightly differs Whereas babel has a unique name for each lan-guage variety (eg american and british) polyglossia differentiates language vari-eties via language options (eg english variant=american)

Furthermore babel sometimes uses abbreviated language names (eg ba-hasam for Bahasa Malayu) as well as endonyms ie language names comingfrom the designated languages (such as bahasa canadien or magyar) As op-posed to this polyglossia always uses spelled-out (lower-cased) English languagenames Please refer to table 2 for the differing language names in both packages

For convenience reasons polyglossia also supports the use of babel nameslarrv146

(for the few justified exceptions please refer to the notes in table 2) Thebabel names listed in table 2 can be used instead of the corresponding poly-glossia nameoptions in setdefaultlanguage and setotherlanguage as wellas in the polyglossia and babel language switching commandsenvironmentsdocumented in section 31 and 32 (eg textaustrian is synonymous totextgerman[variant=austrianspelling=old]) However unless you havespecial reasons we strongly encourage you to use the polyglossia names

6

Table 2 Babel-polyglossia language name matching

Babel name Polyglossia name Polyglossia options

acadien french variant=acadianamerican english variant=american [default]australian english variant=australianaustrian german variant=austrian spelling=oldbahasa malay variant=indonesian [default]bahasam malay variant=malaysianbrazil portuguese variant=brazilianbritish english variant=britishcanadian english variant=canadiancanadien french variant=canadianclassiclatina latin variant=classicfarsi persianecclesiasticlatinb latin variant=ecclesiasticfriulan friuliangermanc german spelling=oldirish gaelic variant=irish [default]kurmanji kurdish variant=kurmanjilowersorbian sorbian variant=lowermagyar hungarianmedievallatind latin variant=medievalnaustrian german variant=austriannewzealand english variant=newzealandngerman german variant=german [default]norsk norwegian variant=bokmalnswissgerman german variant=swissnynorsk norwegian variant=nynorsk [default]polutonikogreek greek variant=polytonicportuges portuguese variant=portuguese [default]samin samiscottish gaelic variant=scottishserbianc serbian script=Cyrillicslovene slovenianspanishmx spanish variant=mexicanswissgerman german variant=swiss spelling=olduppersorbian sorbian variant=upper [default]

aIn babel currently only selectable via dot modifier (latinclassic)bIn babel currently only selectable via dot modifier (latinecclesiastic)cDue to the name conflict only available in polyglossia as germanb (which is a babel synonym)dIn babel currently only selectable via dot modifier (latinmedieval)

7

24 Using IETF language tags

Polyglossia larr also supports the use of language tags that conform to thev147

IETF BCP-47 Best Current Practice4 Thus you can use tags such as en-GB(for British English) or de-AT-1901 (for Austrian German old spelling) insetdefaultlanguage and setotherlanguage as well as in the language switch-ing command textlang⟨tag⟩ the environment beginlang⟨tag⟩ hellipendlang and the babel language switching commandsenvironments docu-mented in section 32 Table 3 lists the currently supported tags

Table 3 BCP47-polyglossia language name matching

BCP-47 tag Polyglossia name Polyglossia options

aeb arabic locale=tunisiaaf afrikaansafb arabic locale=defaultam amharicapd arabic locale=defaultar arabicar-IQ arabic locale=mashriqar-JO arabic locale=mashriqar-LB arabic locale=mashriqar-MR arabic locale=mauritaniaar-PS arabic locale=mashriqar-SY arabic locale=mashriqar-YE arabic locale=defaultarq arabic locale=algeriaary arabic locale=moroccoarz arabic locale=defaultast asturianayl arabic locale=libyabe belarusianbe-tarask belarusian spelling=classicbg bulgarianbn bengalibo tibetanbr bretonbs bosnianca catalan

4Please refer to httpstoolsietforghtmlbcp47 and httpsenwikipediaorgwikiIETF_language_tag for details

8

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

ckb kurdish variant=sorani [default]ckb-Arab kurdish variant=sorani script=Arabic [default]ckb-Latn kurdish variant=sorani script=Latincop copticcy welshcz czechda danishde germande-AT german variant=austrian spelling=newde-AT-1901 german variant=austrian spelling=oldde-AT-1996 german variant=austrian spelling=newde-CH german variant=swiss spelling=newde-CH-1901 german variant=swiss spelling=oldde-CH-1996 german variant=swiss spelling=newde-DE german variant=german spelling=newde-DE-1901 german variant=german spelling=oldde-DE-1996 german variant=german spelling=new [default]de-Latf german script=blackletterde-Latf-AT german variant=austrian spelling=new script=blackletterde-Latf-AT-1901 german variant=austrian spelling=old script=blackletterde-Latf-AT-1996 german variant=austrian spelling=new script=blackletterde-Latf-CH german variant=swiss spelling=new script=blackletterde-Latf-CH-1901 german variant=swiss spelling=old script=blackletterde-Latf-CH-1996 german variant=swiss spelling=new script=blackletterde-Latf-DE german variant=german spelling=new script=blackletterde-Latf-DE-1901 german variant=german spelling=old script=blackletterde-Latf-DE-1996 german variant=german spelling=new script=blackletterdsb sorbian variant=lowerdv divehiel greekel-monoton greek variant=monotonic [default]el-polyton greek varant=polytonicen englishen-AU english variant=australianen-CA english variant=canadianen-GB english variant=britishen-NZ english variant=newzealanden-US english variant=us [default]eo esperanto

9

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

es spanishes-ES spanish variant=spanish [default]es-MX spanish variant=mexicanet estonianeu basquefa persianfi finnishfr frenchfr-CA french variant=canadianfr-CH french variant=swissfr-FR french variant=french [default]fur friulianga gaelic variant=irish [default]gd gaelic variant=scottishgl galiciangrc greek variant=ancienthe hebrewhi hindihr croatianhsb sorbian variant=upper [default]hu hungarianhy armeniania interlinguaid malay variant=indonesianis icelandicit italianja japaneseka georgiankm khmerkmr kurdish variant=kurmanjikmr-Arab kurdish variant=kurmanji script=Arabickmr-Latn kurdish variant=kurmanji script=Latinkn kannadako koreanku kurdishku-Arab kurdish script=Arabicku-Latn kurdish script=Latinla latinla-x-classic latin variant=classic

10

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

la-x-ecclesia latin variant=ecclesiasticla-x-medieval latin variant=medievallo laolt lithuanianlv latvianmk macedonianml malayalammn mongolianmr marathinb norwegian variant=bokmalnko nkonl dutchnn norwegian variant=nynorsk [default]oc occitanpl polishpms piedmontesept portuguesept-BR portuguese variant=brazilianpt-PT portuguese variant=portuguese [default]rm romanshro romanianru russianru-luna1918 russian spelling=modern [default]ru-petr1708 russian spelling=oldsa sanskritsa-Beng sanskrit script=Bengalisa-Deva sanskrit script=Devanagari [default]sa-Gujr sanskrit script=Gujaratisa-Knda sanskrit script=Kannadasa-Mlym sanskrit script=Malayalamsa-Telu sanskrit script=Teluguse samisk slovaksl sloveniansq albaniansr serbiansr-Cyrl serbian script=Cyrillicsr-Latn serbian script=Latin [default]sv swedish

11

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 7: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Table 2 Babel-polyglossia language name matching

Babel name Polyglossia name Polyglossia options

acadien french variant=acadianamerican english variant=american [default]australian english variant=australianaustrian german variant=austrian spelling=oldbahasa malay variant=indonesian [default]bahasam malay variant=malaysianbrazil portuguese variant=brazilianbritish english variant=britishcanadian english variant=canadiancanadien french variant=canadianclassiclatina latin variant=classicfarsi persianecclesiasticlatinb latin variant=ecclesiasticfriulan friuliangermanc german spelling=oldirish gaelic variant=irish [default]kurmanji kurdish variant=kurmanjilowersorbian sorbian variant=lowermagyar hungarianmedievallatind latin variant=medievalnaustrian german variant=austriannewzealand english variant=newzealandngerman german variant=german [default]norsk norwegian variant=bokmalnswissgerman german variant=swissnynorsk norwegian variant=nynorsk [default]polutonikogreek greek variant=polytonicportuges portuguese variant=portuguese [default]samin samiscottish gaelic variant=scottishserbianc serbian script=Cyrillicslovene slovenianspanishmx spanish variant=mexicanswissgerman german variant=swiss spelling=olduppersorbian sorbian variant=upper [default]

aIn babel currently only selectable via dot modifier (latinclassic)bIn babel currently only selectable via dot modifier (latinecclesiastic)cDue to the name conflict only available in polyglossia as germanb (which is a babel synonym)dIn babel currently only selectable via dot modifier (latinmedieval)

7

24 Using IETF language tags

Polyglossia larr also supports the use of language tags that conform to thev147

IETF BCP-47 Best Current Practice4 Thus you can use tags such as en-GB(for British English) or de-AT-1901 (for Austrian German old spelling) insetdefaultlanguage and setotherlanguage as well as in the language switch-ing command textlang⟨tag⟩ the environment beginlang⟨tag⟩ hellipendlang and the babel language switching commandsenvironments docu-mented in section 32 Table 3 lists the currently supported tags

Table 3 BCP47-polyglossia language name matching

BCP-47 tag Polyglossia name Polyglossia options

aeb arabic locale=tunisiaaf afrikaansafb arabic locale=defaultam amharicapd arabic locale=defaultar arabicar-IQ arabic locale=mashriqar-JO arabic locale=mashriqar-LB arabic locale=mashriqar-MR arabic locale=mauritaniaar-PS arabic locale=mashriqar-SY arabic locale=mashriqar-YE arabic locale=defaultarq arabic locale=algeriaary arabic locale=moroccoarz arabic locale=defaultast asturianayl arabic locale=libyabe belarusianbe-tarask belarusian spelling=classicbg bulgarianbn bengalibo tibetanbr bretonbs bosnianca catalan

4Please refer to httpstoolsietforghtmlbcp47 and httpsenwikipediaorgwikiIETF_language_tag for details

8

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

ckb kurdish variant=sorani [default]ckb-Arab kurdish variant=sorani script=Arabic [default]ckb-Latn kurdish variant=sorani script=Latincop copticcy welshcz czechda danishde germande-AT german variant=austrian spelling=newde-AT-1901 german variant=austrian spelling=oldde-AT-1996 german variant=austrian spelling=newde-CH german variant=swiss spelling=newde-CH-1901 german variant=swiss spelling=oldde-CH-1996 german variant=swiss spelling=newde-DE german variant=german spelling=newde-DE-1901 german variant=german spelling=oldde-DE-1996 german variant=german spelling=new [default]de-Latf german script=blackletterde-Latf-AT german variant=austrian spelling=new script=blackletterde-Latf-AT-1901 german variant=austrian spelling=old script=blackletterde-Latf-AT-1996 german variant=austrian spelling=new script=blackletterde-Latf-CH german variant=swiss spelling=new script=blackletterde-Latf-CH-1901 german variant=swiss spelling=old script=blackletterde-Latf-CH-1996 german variant=swiss spelling=new script=blackletterde-Latf-DE german variant=german spelling=new script=blackletterde-Latf-DE-1901 german variant=german spelling=old script=blackletterde-Latf-DE-1996 german variant=german spelling=new script=blackletterdsb sorbian variant=lowerdv divehiel greekel-monoton greek variant=monotonic [default]el-polyton greek varant=polytonicen englishen-AU english variant=australianen-CA english variant=canadianen-GB english variant=britishen-NZ english variant=newzealanden-US english variant=us [default]eo esperanto

9

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

es spanishes-ES spanish variant=spanish [default]es-MX spanish variant=mexicanet estonianeu basquefa persianfi finnishfr frenchfr-CA french variant=canadianfr-CH french variant=swissfr-FR french variant=french [default]fur friulianga gaelic variant=irish [default]gd gaelic variant=scottishgl galiciangrc greek variant=ancienthe hebrewhi hindihr croatianhsb sorbian variant=upper [default]hu hungarianhy armeniania interlinguaid malay variant=indonesianis icelandicit italianja japaneseka georgiankm khmerkmr kurdish variant=kurmanjikmr-Arab kurdish variant=kurmanji script=Arabickmr-Latn kurdish variant=kurmanji script=Latinkn kannadako koreanku kurdishku-Arab kurdish script=Arabicku-Latn kurdish script=Latinla latinla-x-classic latin variant=classic

10

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

la-x-ecclesia latin variant=ecclesiasticla-x-medieval latin variant=medievallo laolt lithuanianlv latvianmk macedonianml malayalammn mongolianmr marathinb norwegian variant=bokmalnko nkonl dutchnn norwegian variant=nynorsk [default]oc occitanpl polishpms piedmontesept portuguesept-BR portuguese variant=brazilianpt-PT portuguese variant=portuguese [default]rm romanshro romanianru russianru-luna1918 russian spelling=modern [default]ru-petr1708 russian spelling=oldsa sanskritsa-Beng sanskrit script=Bengalisa-Deva sanskrit script=Devanagari [default]sa-Gujr sanskrit script=Gujaratisa-Knda sanskrit script=Kannadasa-Mlym sanskrit script=Malayalamsa-Telu sanskrit script=Teluguse samisk slovaksl sloveniansq albaniansr serbiansr-Cyrl serbian script=Cyrillicsr-Latn serbian script=Latin [default]sv swedish

11

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 8: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

24 Using IETF language tags

Polyglossia larr also supports the use of language tags that conform to thev147

IETF BCP-47 Best Current Practice4 Thus you can use tags such as en-GB(for British English) or de-AT-1901 (for Austrian German old spelling) insetdefaultlanguage and setotherlanguage as well as in the language switch-ing command textlang⟨tag⟩ the environment beginlang⟨tag⟩ hellipendlang and the babel language switching commandsenvironments docu-mented in section 32 Table 3 lists the currently supported tags

Table 3 BCP47-polyglossia language name matching

BCP-47 tag Polyglossia name Polyglossia options

aeb arabic locale=tunisiaaf afrikaansafb arabic locale=defaultam amharicapd arabic locale=defaultar arabicar-IQ arabic locale=mashriqar-JO arabic locale=mashriqar-LB arabic locale=mashriqar-MR arabic locale=mauritaniaar-PS arabic locale=mashriqar-SY arabic locale=mashriqar-YE arabic locale=defaultarq arabic locale=algeriaary arabic locale=moroccoarz arabic locale=defaultast asturianayl arabic locale=libyabe belarusianbe-tarask belarusian spelling=classicbg bulgarianbn bengalibo tibetanbr bretonbs bosnianca catalan

4Please refer to httpstoolsietforghtmlbcp47 and httpsenwikipediaorgwikiIETF_language_tag for details

8

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

ckb kurdish variant=sorani [default]ckb-Arab kurdish variant=sorani script=Arabic [default]ckb-Latn kurdish variant=sorani script=Latincop copticcy welshcz czechda danishde germande-AT german variant=austrian spelling=newde-AT-1901 german variant=austrian spelling=oldde-AT-1996 german variant=austrian spelling=newde-CH german variant=swiss spelling=newde-CH-1901 german variant=swiss spelling=oldde-CH-1996 german variant=swiss spelling=newde-DE german variant=german spelling=newde-DE-1901 german variant=german spelling=oldde-DE-1996 german variant=german spelling=new [default]de-Latf german script=blackletterde-Latf-AT german variant=austrian spelling=new script=blackletterde-Latf-AT-1901 german variant=austrian spelling=old script=blackletterde-Latf-AT-1996 german variant=austrian spelling=new script=blackletterde-Latf-CH german variant=swiss spelling=new script=blackletterde-Latf-CH-1901 german variant=swiss spelling=old script=blackletterde-Latf-CH-1996 german variant=swiss spelling=new script=blackletterde-Latf-DE german variant=german spelling=new script=blackletterde-Latf-DE-1901 german variant=german spelling=old script=blackletterde-Latf-DE-1996 german variant=german spelling=new script=blackletterdsb sorbian variant=lowerdv divehiel greekel-monoton greek variant=monotonic [default]el-polyton greek varant=polytonicen englishen-AU english variant=australianen-CA english variant=canadianen-GB english variant=britishen-NZ english variant=newzealanden-US english variant=us [default]eo esperanto

9

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

es spanishes-ES spanish variant=spanish [default]es-MX spanish variant=mexicanet estonianeu basquefa persianfi finnishfr frenchfr-CA french variant=canadianfr-CH french variant=swissfr-FR french variant=french [default]fur friulianga gaelic variant=irish [default]gd gaelic variant=scottishgl galiciangrc greek variant=ancienthe hebrewhi hindihr croatianhsb sorbian variant=upper [default]hu hungarianhy armeniania interlinguaid malay variant=indonesianis icelandicit italianja japaneseka georgiankm khmerkmr kurdish variant=kurmanjikmr-Arab kurdish variant=kurmanji script=Arabickmr-Latn kurdish variant=kurmanji script=Latinkn kannadako koreanku kurdishku-Arab kurdish script=Arabicku-Latn kurdish script=Latinla latinla-x-classic latin variant=classic

10

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

la-x-ecclesia latin variant=ecclesiasticla-x-medieval latin variant=medievallo laolt lithuanianlv latvianmk macedonianml malayalammn mongolianmr marathinb norwegian variant=bokmalnko nkonl dutchnn norwegian variant=nynorsk [default]oc occitanpl polishpms piedmontesept portuguesept-BR portuguese variant=brazilianpt-PT portuguese variant=portuguese [default]rm romanshro romanianru russianru-luna1918 russian spelling=modern [default]ru-petr1708 russian spelling=oldsa sanskritsa-Beng sanskrit script=Bengalisa-Deva sanskrit script=Devanagari [default]sa-Gujr sanskrit script=Gujaratisa-Knda sanskrit script=Kannadasa-Mlym sanskrit script=Malayalamsa-Telu sanskrit script=Teluguse samisk slovaksl sloveniansq albaniansr serbiansr-Cyrl serbian script=Cyrillicsr-Latn serbian script=Latin [default]sv swedish

11

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 9: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

ckb kurdish variant=sorani [default]ckb-Arab kurdish variant=sorani script=Arabic [default]ckb-Latn kurdish variant=sorani script=Latincop copticcy welshcz czechda danishde germande-AT german variant=austrian spelling=newde-AT-1901 german variant=austrian spelling=oldde-AT-1996 german variant=austrian spelling=newde-CH german variant=swiss spelling=newde-CH-1901 german variant=swiss spelling=oldde-CH-1996 german variant=swiss spelling=newde-DE german variant=german spelling=newde-DE-1901 german variant=german spelling=oldde-DE-1996 german variant=german spelling=new [default]de-Latf german script=blackletterde-Latf-AT german variant=austrian spelling=new script=blackletterde-Latf-AT-1901 german variant=austrian spelling=old script=blackletterde-Latf-AT-1996 german variant=austrian spelling=new script=blackletterde-Latf-CH german variant=swiss spelling=new script=blackletterde-Latf-CH-1901 german variant=swiss spelling=old script=blackletterde-Latf-CH-1996 german variant=swiss spelling=new script=blackletterde-Latf-DE german variant=german spelling=new script=blackletterde-Latf-DE-1901 german variant=german spelling=old script=blackletterde-Latf-DE-1996 german variant=german spelling=new script=blackletterdsb sorbian variant=lowerdv divehiel greekel-monoton greek variant=monotonic [default]el-polyton greek varant=polytonicen englishen-AU english variant=australianen-CA english variant=canadianen-GB english variant=britishen-NZ english variant=newzealanden-US english variant=us [default]eo esperanto

9

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

es spanishes-ES spanish variant=spanish [default]es-MX spanish variant=mexicanet estonianeu basquefa persianfi finnishfr frenchfr-CA french variant=canadianfr-CH french variant=swissfr-FR french variant=french [default]fur friulianga gaelic variant=irish [default]gd gaelic variant=scottishgl galiciangrc greek variant=ancienthe hebrewhi hindihr croatianhsb sorbian variant=upper [default]hu hungarianhy armeniania interlinguaid malay variant=indonesianis icelandicit italianja japaneseka georgiankm khmerkmr kurdish variant=kurmanjikmr-Arab kurdish variant=kurmanji script=Arabickmr-Latn kurdish variant=kurmanji script=Latinkn kannadako koreanku kurdishku-Arab kurdish script=Arabicku-Latn kurdish script=Latinla latinla-x-classic latin variant=classic

10

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

la-x-ecclesia latin variant=ecclesiasticla-x-medieval latin variant=medievallo laolt lithuanianlv latvianmk macedonianml malayalammn mongolianmr marathinb norwegian variant=bokmalnko nkonl dutchnn norwegian variant=nynorsk [default]oc occitanpl polishpms piedmontesept portuguesept-BR portuguese variant=brazilianpt-PT portuguese variant=portuguese [default]rm romanshro romanianru russianru-luna1918 russian spelling=modern [default]ru-petr1708 russian spelling=oldsa sanskritsa-Beng sanskrit script=Bengalisa-Deva sanskrit script=Devanagari [default]sa-Gujr sanskrit script=Gujaratisa-Knda sanskrit script=Kannadasa-Mlym sanskrit script=Malayalamsa-Telu sanskrit script=Teluguse samisk slovaksl sloveniansq albaniansr serbiansr-Cyrl serbian script=Cyrillicsr-Latn serbian script=Latin [default]sv swedish

11

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 10: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

es spanishes-ES spanish variant=spanish [default]es-MX spanish variant=mexicanet estonianeu basquefa persianfi finnishfr frenchfr-CA french variant=canadianfr-CH french variant=swissfr-FR french variant=french [default]fur friulianga gaelic variant=irish [default]gd gaelic variant=scottishgl galiciangrc greek variant=ancienthe hebrewhi hindihr croatianhsb sorbian variant=upper [default]hu hungarianhy armeniania interlinguaid malay variant=indonesianis icelandicit italianja japaneseka georgiankm khmerkmr kurdish variant=kurmanjikmr-Arab kurdish variant=kurmanji script=Arabickmr-Latn kurdish variant=kurmanji script=Latinkn kannadako koreanku kurdishku-Arab kurdish script=Arabicku-Latn kurdish script=Latinla latinla-x-classic latin variant=classic

10

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

la-x-ecclesia latin variant=ecclesiasticla-x-medieval latin variant=medievallo laolt lithuanianlv latvianmk macedonianml malayalammn mongolianmr marathinb norwegian variant=bokmalnko nkonl dutchnn norwegian variant=nynorsk [default]oc occitanpl polishpms piedmontesept portuguesept-BR portuguese variant=brazilianpt-PT portuguese variant=portuguese [default]rm romanshro romanianru russianru-luna1918 russian spelling=modern [default]ru-petr1708 russian spelling=oldsa sanskritsa-Beng sanskrit script=Bengalisa-Deva sanskrit script=Devanagari [default]sa-Gujr sanskrit script=Gujaratisa-Knda sanskrit script=Kannadasa-Mlym sanskrit script=Malayalamsa-Telu sanskrit script=Teluguse samisk slovaksl sloveniansq albaniansr serbiansr-Cyrl serbian script=Cyrillicsr-Latn serbian script=Latin [default]sv swedish

11

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 11: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

la-x-ecclesia latin variant=ecclesiasticla-x-medieval latin variant=medievallo laolt lithuanianlv latvianmk macedonianml malayalammn mongolianmr marathinb norwegian variant=bokmalnko nkonl dutchnn norwegian variant=nynorsk [default]oc occitanpl polishpms piedmontesept portuguesept-BR portuguese variant=brazilianpt-PT portuguese variant=portuguese [default]rm romanshro romanianru russianru-luna1918 russian spelling=modern [default]ru-petr1708 russian spelling=oldsa sanskritsa-Beng sanskrit script=Bengalisa-Deva sanskrit script=Devanagari [default]sa-Gujr sanskrit script=Gujaratisa-Knda sanskrit script=Kannadasa-Mlym sanskrit script=Malayalamsa-Telu sanskrit script=Teluguse samisk slovaksl sloveniansq albaniansr serbiansr-Cyrl serbian script=Cyrillicsr-Latn serbian script=Latin [default]sv swedish

11

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 12: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Table 3 BCP47-polyglossia language name matching (continued)

BCP-47 tag Polyglossia name Polyglossia options

syr syriacta tamilte teluguth thaitk turkmentr turkishuk ukrainianur urduvi vietnamesezsm malay variant=malaysian [default]

25 Global options

Polyglossia can be loaded with the following global package options babelshorthandslarr = true or false

v111Globally activates babel shorthands whenever available Currently short-hands are implemented for Afrikaans Belarusian Catalan Croatian CzechDutch Finnish Georgian German Italian Latin Mongolian RussianSlovak and Ukrainian Please refer to the respective language descriptions(sec 6) for details

localmarks = true or falseredefines the internal LATEXmacros markboth and markright to the effectthat the header text is explicitly set in the currently active language (iewrapped into foreignlanguage⟨lang⟩⟨hellip⟩)In earlier versions of polyglossialarr this optionwas enabled by default but

v120we now realize that it causes more problems than it helps (since it breaksif a package or class redefines markboth or markright) so it is now dis-abled by default For backwards compatibility the option nolocalmarkswhich used to switch off the previous default and now equals the defaultis still available

quiet turns off most info messages and some of the warnings issued byLATEX fontspec and polyglossia

12

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 13: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

3 Language-switching commands

31 Recommended commands

For each activated language the command text⟨lang⟩[⟨options⟩]⟨hellip⟩ (astext⟨lang⟩

well as the synonymous textlang[⟨options⟩]⟨lang⟩⟨hellip⟩ larr) becomestextlangv146 available for short insertions of text in that language

For example textrussiantoday and textlangrussiantoday yield8 апреля 2020 гThe commands switch to the correct hyphenation patterns theyactivate some extra features for the selected language (such as extra spacingbefore punctuation in French) and they translate the date when using todayThey do not however translate so-called caption strings ie ldquochapterrdquo ldquofigurerdquoetc to the local language (these remain in the currently active lsquoouterrsquo language)

The environment ⟨lang⟩ which is also available for any activated language⟨lang⟩

(as well as the equivalent beginlang[⟨options⟩]⟨lang⟩hellip endlanglarr)langv147 is meant for longer passages of text It behaves slightly different than the

text⟨lang⟩ and textlang commands It does everything the latter do butadditionally the caption strings are translated as well and the language is alsopassed to auxiliary files the table of contents and the lists of figurestables Likethe commands the environment provides the possibility of setting language op-tions locally For instance the following allows us to quote the beginning ofHomerrsquos Iliad

beginquotebegingreek[variant=ancient]

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρί Ἀχαιοῖςἄλγε ἔθηκε πολλὰς δ ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώωναὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δἐτελείετο βουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδηςτε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς

endgreekendquote

μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην ἣ μυρίrsquo Ἀχαιοῖςἄλγεrsquo ἔθηκε πολλὰς δrsquo ἰφθίμους ψυχὰς Ἄϊδι προίαψεν ἡρώων αὐ-τοὺς δὲ ἑλώρια τεῦχε κύνεσσιν οἰωνοῖσί τε πᾶσι Διὸς δrsquo ἐτελείετοβουλή ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε Ἀτρείδης τε ἄναξἀνδρῶν καὶ δῖος Ἀχιλλεύς

13

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 14: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Note that for Arabic one cannot use the environment arabic as arabic isArabic

defined internally by LATEX In this case we need to use the environment Arabicinstead

32 Babel commands

Some macros defined in babelrsquos hyphencfg (and thus usually compiled into theX ELATEX and LuaLATEX format) are redefined but keep a similar behaviour

selectlanguage[⟨options⟩]⟨lang⟩selectlanguage

foreignlanguage[⟨options⟩]⟨lang⟩⟨hellip⟩foreignlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

beginotherlanguage[⟨options⟩]⟨lang⟩ hellip endotherlanguageotherlanguage

selectlanguage⟨lang⟩ and the otherlanguage environment are identical tothe the ⟨lang⟩ environment except that selectlanguage⟨lang⟩ does notneed to be explicitly closed The command foreinlanguage⟨lang⟩⟨hellip⟩ andthe otherlanguage environment are identical with the use of the text⟨lang⟩or textlang command with the one notable exception that they do not trans-late the date with today

Since the X ELATEX and LuaLATEX format incorporate babelrsquos hyphencfg thelow-level commands for hyphenation and language switching defined there arealso accessible

33 Other commands

The following commands are probably of lesser interest to the end user but oughtto be mentioned here

selectbackgroundlanguage⟨lang⟩ this selects the global font setupselectbackgroundlanguage

and the numbering definitions for the default language resetdefaultlanguage[⟨options⟩]⟨lang⟩ (experimental) completelyresetdefaultlanguage

switches the default language to another one in the middle of a documentthis may have adverse effects

normalfontlatin in an environment where normalfont has been re-normalfontlatin

defined to a non-latin script this will reset to the font defined withsetmainfont etc In a similar vein it is possible to use rmfamilylatinrmfamilylatin

sffamilylatin and ttfamilylatinsffamilylatin

ttfamilylatin latinalph Representation of counter as a lower-case letter 1 = a 2 = blatinalph etc

latinAlph Representation of counter as a upper-case letter 1 = A 2 = BlatinAlph

etc

14

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 15: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

34 Setting up alias commands

By means of the macrosetlanguagealias[⟨options⟩]⟨language⟩⟨alias⟩ larrsetlanguagealias

v146 you can define alias commands for specific language (variants) Eg

setlanguagealias[variant=austrian]germanAT

will define a command textAT as well as an environment AT which will linktowards the command textgerman[variant=austrian] and the environmentgerman[variant=austrian] respectively The aliases can also be used in thelanguage switching commands described in section 31 and 32 Note thoughthat the usual restrictions for command names apply so something such as de-ATor de_AT will not work since - and _ are not allowed in command names (thesame holds true for any non-ASCII character and for digits)

For the latter case and for the case where an alias would clash with an exist-ing command (eg fi) or a text⟨hellip⟩ command (eg textit) a starred versionsetlanguagealias is provided which does neither define a text⟨alias⟩ com-setlanguagealias

mand nor an ⟨alias⟩ environment but which will set up the alias for everythingelse including textlang⟨alias⟩ and beginlang⟨alias⟩

Polyglossia comes with some aliases predefined namely aliases for babellanguage names (see sec 23) and for IETF BCP-47 language tags (the latter viasetlanguagealias see sec 24)

4 Font setup

With polyglossia it is possible to associate a specific font with any script orlanguage that occurs in the document That font should always be defined as⟨script⟩font or ⟨language⟩font For instance if the default font defined bysetmainfont does not support Greek then one can define the font used to dis-play Greek with

newfontfamilygreekfont[Script=Greek⟨hellip⟩]⟨font⟩Note that polyglossia will use the font defined as is so assure to do all necessarysettings (please refer to the fontspec documentation for details) For instanceif arabicfont is explicitly defined then the option Script=Arabic should beincluded in that definition

If a specific sans serif or monospace (lsquoteletypersquo) font is needed for a partic-ular script or language it can be defined by means of larr ⟨script⟩fontsf or

v120⟨language⟩fontsf and ⟨script⟩fonttt or ⟨language⟩fonttt respectively

15

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 16: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Whenever a new language is activated polyglossia will first check whethera font has been defined for that language or ndash for languages in non-Latin scriptsndash for the script it uses If it is not defined it will use the currently active fontand ndash in the case of OpenType fonts ndash will attempt to turn on the appropriateOpenType tags for the script and language used in case these are available inthe font by means of fontspecrsquos addfontfeature If the current font does notappear to support the script of that language an error message is displayed

5 Adapting hyphenation

51 Hyphenation exceptions

TEX provides the command hyphenation⟨exceptions⟩ to globally define hy-phenation exceptions which override the hyphenation patterns for specifiedwords The command takes as argument a space-separated list of words wherehyphenation points are marked by a dash (if no dash is used the respective wordis not hyphenated at all)

hyphenationpo-ly-glos-siaLaTeX

These exceptions however apply to all languages In addition to this polyglossiaprovides the commandlarr

v145xpghyphenation[⟨options⟩]⟨lang⟩⟨exceptions⟩xpghyphenation

which can be used to define exceptions that only apply to a specific language orlanguage variant respectively

52 Hyphenation disabling

In some very specific contexts (such as music score creation) TEX hyphenation issomething to avoid as it may cause troubles polyglossia provides two functionsdisablehyphenation and enablehyphenation Note that if you select a newdisablehyphenation

enablehyphenation language while hyphenation is disabled it will remain disabled If you re-enableit the hyphenation patterns of the currently selected language will be activated

16

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 17: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

6 Language-specific options and commands

This section gives a list of all languages for which options and end-user com-mands are defined Note the following conventions

The preset value of each option (ie the setting that applies by default ifthe option is not explicitly set) is given in italics

If an option key may be used without a value the value that applies forvalue-less keys is marked by a preceding asterisk

For instance babelshorthands = true or false means that babelshorthandsis false by default in the respective language and that passing babelshorthands(without value) is equivalent to passing babelshorthands=true

61 afrikaans

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Afrikaans words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

62 arabic

Options calendar = gregorian or islamic (= hijri) locale = default5 mashriq6 libya algeria tunisia morocco mauritania

5For Egypt Sudan Yemen and the Gulf states6For Iraq Syria Jordan Lebanon and Palestine

17

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 18: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

This setting influences the spelling of the month names for the Gregoriancalendar as well as the form of the numerals (unless overriden by the fol-lowing option)

numerals = mashriq or maghribThe latter is the default when locale=algeria tunisia or morocco

abjadjimnotaillarr = true or falsev103

Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad and abjadmaghribi (see section 83)abjad

abjadmaghribi aemph to emphasize text with overline larr textarabicaemphابaemph

v120yields اب This command is also available for Farsi Urdu etc

63 armenian

Options variantlarr = eastern or western

v145 numeralslarr = armenian or arabic

v145

64 belarusianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)

18

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 19: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem7 It supports numbers up to 999 999

spelling = modern or classic (= tarask)With spelling=classic captions and dates adhere to the Taraškievica (orBelarusian classical) orthography rather than the standard orthography

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextbelarusianAsbukpage produces У

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textbelarusianAsbukTradpage produces ІѲ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

65 bengalilarrv120

Options numerals = Western Bengali or Devanagari changecounternumbering = true or falseUse specified numerals for headings and page numbers

66 catalan

Options babelshorthandslarr = true or false

v111Activates the shorthands l and L to type geminated l or L

7See httpsenwikipediaorgwikiCyrillic_numerals

19

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 20: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Commands ll and LLlarr can be used to type a geminated l as in colmiddotlaborar similarll

LLv111

to babel (the glyph U+00B7 MIDDLE DOT is used as a geminating sign)

67 croatian

Options babelshorthandslarr = true or false

v147If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Croatian words are activated| disables a ligature at this position= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

Furthermore the following shorthands generate easy access to Croatiandigraphs (ligatures)dz Generates the ligature dž if the font provides it If not the two char-

acters are output separately Also available for Dz (Dž) and DZ (DŽ)lj Generates the ligature lj if the font provides it If not the two char-

acters are output separately Also available for Lj (Lj) and LJ (LJ)nj Generates the ligature nj if the font provides it If not the two char-

acters are output separately Also available for Nj (Nj) and NJ (NJ)Finally there are also four shorthands for quotation marks` for Croatian left double quotes (bdquo) for Croatian right double quotes (rdquo)gt for Croatian left guillemets (raquo)

20

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 21: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

lt for Croatian right guillemets (laquo) disableligatureslarr = true or false

v147If this is true all Croatian ligatures (for digraphs such as dž) will be re-placed by single characters This can be useful if the ligatures on yourfont are broken (if the font does not have them they are automaticallyreplaced)

68 czech

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for Czech are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Czech typesetting (onlyneeded with splithyphens=false)

lsquo for Czech left double quotes (bdquo)rsquo for Czech right double quotes (ldquo)gt for Czech left double guillemets (raquo)lt for Czech right double guillemets (laquo)

splithyphenslarr = true or falsev145

According to Czech typesetting conventions if a word with a hard hyphen(such as je-li) is hyphenated at this hyphen a second hyphenation charac-ter is to be inserted at the beginning of the line that follows the hyphen-ation (je--li) By default this is done automatically larr (if you are using

v146LuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev145

According to Czech typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes careof this automatically by default larr (if you are using LuaTEX the luavlna

v146package is loaded to achieve this) Set this option to false to disable thefeature

21

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 22: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

69 dutch

Options babelshorthandslarr = true or false

v111If this is turned on the following shorthands defined for fine-tuning hy-phenation and micro-typography of Dutch words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to - in defaultTEX)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

In addition the macro - is redefined to allow hyphens in the rest of the-

word (equivalent to -)

610 english

Options variant = american (= us) usmax (same as american but with addi-tional hyphenation patterns) british (= uk) australian canadianlarr or

v145newzealand

ordinalmonthday = true or falseThe default value is true for variant=british

611 esperanto

Commands hodiau and hodiaun are special forms of today The former produceshodiau

hodiaun the date in Esperanto preceded by the article (la) which is the most com-mon date format The latter produces the same date format in accusativecase

22

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 23: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

612 finnish

Options babelshorthandslarr = true or false

v145If this is turned on the following shorthands for fine-tuning hyphenationand micro-typography of Finnish words are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

613 french

Options variant = french or canadian (= acadian)larr swisslarr

v145v147 Currently the only difference between the four variants is that swiss uses

thincolonspace=true by default since this conforms to the Swiss conven-tions

autospacing = true or falseOne of the most distinct features of French typography is the addition ofextra spacing around punctuation and quotation marks (guillemets) Bydefault polyglossia adds these spaces automatically so you donrsquot need toenter them This options allows you to switch this feature off globally

thincolonspacelarr = true or falsev146

With variant=swiss the default value is true If false a full (non-breaking) interword space is inserted before a colon If true a thinnerspace ndash as before and ndash is used Note that this option must be setafter the variant option

autospaceguillemets8 = true or false8Up to version 144 the option was called automaticspacesaroundguillemets For backwards

compatibility reasons the more verbose old option is still supported

23

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 24: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

If you only want to disable the automatic addition of spacing after openingand before closing guillemets (and not at punctuation) set this to falseNote that the more general option autospacing overrides this

autospacetypewriter9larr = true or falsev145

By default automatic spacing is disabled in typewriter font If this is en-abled spacing in typewriter context is the same as with roman and sansserif font depending on the autospacing and autospaceguillemets set-tings (note that this was the default up to v 144)

frenchfootnote = true or falseIf true footnotes start with a non-superscripted number followed by adot as common in French typography Note that this might interfere withthe specific footnote handling of classes or packages Also note that thisoption is only functional (by design) if French is the main language

frenchitemlabelslarr = true or falsev146

If true itemize item labels use em-dashes throughout as common inFrench typography Note that this option is only functional (by design)if French is the main language Also it might interfere with list packagessuch as enumitem

itemlabelslarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofall levels

itemlabelilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe first level

itemlabeliilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe second level

itemlabeliiilarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe third level

itemlabelivlarr = ⟨code⟩ (default value textemdash)v146

If frenchitemlabels is true you can customize here the used item label ofthe fourth level

Commands NoAutoSpacing larr disables automatic spacing around punctuation andNoAutoSpacing

v1459Babelrsquos syntax OriginalTypewriter is also supported

24

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 25: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

quotation marks in all following text The command can also be used loc-ally if braces are used for grouping NoAutoSpacing foobar

AutoSpacinglarr enables automatic spacing around punctuation and quo-AutoSpacingv145 tation marks in all following text The command can also be used locally

if braces are used for grouping AutoSpacing regarde

614 gaeliclarrv145

Options variant = irish or scottish

615 georgianlarrv146

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic or georgianUses either Arabic numerals or Georgian alphanumerical numbering

oldmonthnames = true or falseUses traditional Georgian month names

25

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 26: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

616 german

Options variant = german austrian or swisslarr

v1334Setting variant=austrian or variant=swiss uses some lexical variantsWith spelling=old variant=swiss furthermore loads specific hyphena-tion patterns

spelling = new (= 1996) or old (= 1901)Indicates whether hyphenation patterns for traditional (1901) or reformed(1996) orthography should be used The latter is the default

babelshorthandslarr = true or falsev103

If this is turned on all shorthands defined in babel for fine-tuning hyphen-ation and micro-typography of German words are activatedck for ck to be hyphenated as k-k (1901 spelling)ff for ff to be hyphenated as ff-f (1901 spelling) this is also available

for the letters l m n p r and t| disables a ligature at this position (eg Auf|lage)= for an explicit hyphen with a breakpoint allowing for hyphenation

at the other points preset in the hyphenation patterns (as opposed toplain -)

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable eg bergauf und ~ab

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

allows for a line break at this position (without hyphenation sign)eg (pseudo~)wissenschaftlich

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

There are also four shorthands for quotation signs` for German left double quotes (bdquo) for German right double quotes (ldquo)lt for French left double quotes (laquo)gt for French right double quotes (raquo)

26

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 27: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

scriptlarr = latin or blackletterlarr (= fraktur)v120v146 Setting script=blackletter adapts the captions for typesetting German

in blackletter type (using the long s (ſ) where appropriate)

617 greek

Options variant = monotonic (= mono) polytonic (= poly) or ancient numerals = greek or arabic attic = true or false

Commands Greeknumber and greeknumber (see section 83)Greeknumber

greeknumber The command atticnumeral (= atticnum) (activated with the optionatticnumeral

atticnum

attic=true) displays numbers using the acrophonic numbering system(defined in the Unicode range U+10140ndashU+10174)10

618 hebrew

Options numerals = hebrew or arabic calendar = hebrew or gregorian marcheshvan = true or falseIf true the second month of the civil year will be output as מרחשון(Marcheshvan) rather than חשון (Heshvan) which is the default

Commands hebrewnumeral (= hebrewalph) (see section 83)hebrewnumeral

hebrewalph aemph (see section 62)aemph

619 hindilarrv120

Options numerals = Western or Devanagari

10See the documentation of the xgreek package for more details

27

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 28: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

620 hungarian

Options swapstringslarr = all captions headings headers hheaders or none

v146In Hungarian some caption strings need to be in a different order than inother languages (eg 1 fejezet instead of Chapter 1) By default polyglos-sia tries hard to provide the correct order for different classes and pack-ages (standard classes KOMA-scriptmemoir and titlesec package shouldwork as well as fancyhdr and caption) However since the definition ofthese strings is not standardized the redefinitions might not work andeven interfere badly if you use specific classes or packages that redefinethe respective strings themselves In this case you can disable some or allchanges The possibilities are

all Redefine figure and table captions part and chapter headingsand running headers (= default setting)

captions Redefine figure and table captions only headings Redefine part and chapter headings only headers Redefine running headers only hheaders Redefine part and chapter headings as well as runningheaders

none Do not redefine anything

Commands ontoday (= ondatehungarian) special form of todaywhich produces aontoday

ondatehungarian slightly different date format as used in prepositional phrases (such as lsquoonFebruary 10thrsquo) in Hungarian

621 italian

Options babelshorthandslarr = true or false

v120ccActivates the character as a switch to perform etymological hyphena-tion when followed by a letter Furthermore the following shorthands areactivated double raised open quotes (the Italian keyboard misses the backtick)lt open guillemet (looks like laquo)gt closing guillemet (looks like raquo)

28

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 29: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

a slash that allows for a subsequent line break As opposed to slashhyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

- adds a hyphenation point that does still allow for hyphenation at thepoints preset in the hyphenation patterns (as opposed to -)

622 koreanlarrv1400

Options variant = plain classic or modernThese variants control spacing beforeafter CJK punctuations

plain Do nothing classic Suitable for text with no interword spaces This optionforces CJK punctuations to half-width and inserts half-width gluearound them

modern Suitable for text with interword spaces This option forcesCJK punctuations to half-width and inserts small (half of interwordspace) glue around them

captions = hangul or hanja swapstringslarr = all headers headings or none

v147With this option Korean-style part and chapter headings and runningheaders are available It is similar toHungarian (see 620) except that figureand table captions are not touched

all Redefine part and chapter headings and running headers (= de-fault setting)

headings Redefine part and chapter headings only headers Redefine running headers only none Do not redefine anything

623 kurdishlarrv145

Options variant = kurmanji or sorani script = Arabic or LatinDefaults are Arabic for Sorani and Latin for Kurmanji

numerals = western or easternDefaults are western for Latin and eastern for Arabic script dependingon the selection above

29

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 30: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

abjadjimnotail = true or falseSet this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands ontoday special form of today which produces a slightly different dateontoday

format as used in prepositional phrases (as in lsquoon February 10thrsquo) Onlyavailable for Latin script

abjad (see section 83)abjad

aemph (see section 62)aemph

624 laolarrv120

Options numerals = lao or arabic

625 latin

Options variant = classic medieval modern or ecclesiasticlarr

v146These variants refer to different spelling conventions The classic andthe medieval variant do not use the letters U and v but only V and uThis concerns predefined terms like month names as well as the behaviourof the MakeUppercase and the MakeLowercase command The medievaland the ecclesiastic variant use the ligatures aelig and œ See table 4 forexamplesFurthermore the ecclesiastic variant takes care for a punctuation spa-cing similar to French but with smaller spaces as provided for PDFTEX bythe ecclesiastic package

hyphenationlarr = classic modern or liturgicalv146

There are three different sets of hyphenation patterns for Latin Separ-ate documention for them is available on the Internet11 Each of the fourvariants mentioned above has its default set of hyphenation patterns asindicated by table 5 Use the hyphenation option if the default style doesnot fit your needs Note that the liturgical hyphenation patterns are the

11httpsgithubcomgregorio-projecthyphen-lablobmasterdocREADMEmdhyphenation-styles

30

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 31: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Table 4 Spelling differences between the Latin language variantsThe capitalization of month names and the use of ij may be affected bythe capitalizemonth and the usej option

classic medieval modern ecclesiastic

Ianuarii Ianuarii Ianuarii ianuariiNouembris Nouembris Novembris novembrisPraefatio Praeligfatio Praefatio Praeligfatio

MakeUppercaseIulius yieldsIVLIVS IVLIVS IULIUS IULIUS

Table 5 Latin default hyphenation styles

Language variant Default hyphenation style

classic classicmedieval modernmodern modernecclesiastic modern

default of none of the language variants To use them you have to sayhyphenation=liturgical in any case

ecclesiasticfootnoteslarr = true or falsev146

Use footnotes as provided by the ecclesiastic package which typesets foot-notes with ordinary instead of superior numbers and without indentationAsmany ecclesiastic documents and liturgical books use footnotes that arevery similar to the ordinary LATEX ones we do not use this footnote styleas default even for the ecclesiastic variantNote that this option is only possible if Latin is the main language of yourdocument

usejlarr = true or falsev146

Use Jj in predefined terms The letter j is not of ancient origin In earlymodern times it was used to distinguish the consonantic i from the vo-calic i Nowadays the use of j has disappeared from most Latin publica-tions So false is the default value for all four language variants Use thisoption if you prefer Januarii and Maji to Ianuarii and Maii

capitalizemonthlarr = true or falsev146

31

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 32: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Capitalize the month name when printing dates (using the today com-mand) Traditionally month names are capitalized However in recentliturgical books they are lowercase So true is the default value for thevariants classic medieval and modern whereas false is the default valuefor the ecclesiastic variant

babelshorthands = true or falseEnable the following shorthands inherited from babel-latin and the eccle-siastic packagelt for laquo (left guillemet)gt for raquo (right guillemet) If no other shorthand applies before any letter character defines an

optional break point allowing further break points within the sameword (as opposed to the - command)

| the same as but also possible before non-letter charactersa for aacute (a with acute) also available for eacute iacute oacute uacute yacute ǽ and œA for Aacute (A with acute) also available for Eacute Iacute Oacute Uacute V Yacute Ǽ and ŒThe following shorthands are only available for the medieval and theecclesiastic variantae for aelig (ae ligature) also available for œAe for AElig (AE ligature) also available for ŒAE for AElig (AE ligature) also available for Œae for ǽ (ae ligature with acute) also available for œAe for Ǽ (AE ligature with acute) also available for ŒAE for Ǽ (AE ligature with acute) also available for Œ

prosodicshorthandslarr = true or falsev146

Enable shorthands for prosodic marks (macrons and breves) very simil-iar to those provided by babel-latin using the withprosodicmarks modi-fier Note that the active = character used for macrons will cause prob-lems with commands using key=value interfaces such as the commandincludegraphics[scale=2] Use shorthandoff= before suchcommands (and shorthandon= thereafter) within every environmentwith prosodic shorthands enabledThe following shorthands are available=a for ā (a with macron) also available for ē ī ō ū and ȳ

32

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 33: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

=A for Ā (A with macron) also available for Ē Ī Ō Ū V and Ȳ Note thata macron above the letter V is only displayed if your font supportsthe Unicode character 0304 (combining macron)

=ae for ae (ae diphthong with macron) also available for au eu and oeNote that macrons above diphthongs are only displayed if your fontsupports the Unicode character 035E (combining double macron)

=Ae for Ae (Ae diphthong with macron) also available for Au Eu andOe

=AE for AE (AE diphthong with macron) also available for AU EU andOE

^a for ă (a with breve) also available for ĕ ĭ ŏ ŭ and y Note that abreve above the letter y is only displayed if your font supports theUnicode character 0306 (combining breve)

^A Ă (A with breve) also available for Ĕ Ĭ Ŏ Ŭ V and Y Note thatbreves above the letters V and Y are only displayed if your font sup-ports the Unicode character 0306 (combining breve)

626 malay

Options variantlarr = indonesian or malaysian

v145

627 marathi

Options numerals = Devanagari or Western

628 mongolianlarrv145

Currently only the Khalkha variety in Cyrillic script is supported

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)

33

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 34: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

~ for a hyphen sign without a breakpoint Useful for cases where thehyphen should stick at the following syllable

| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech thinspace for initials with a breakpoint in following surnamelsquo for German left double quotes (looks like bdquo)rsquo for German right double quotes (looks like ldquo)lt for French left double quotes (looks like laquo)gt for French right double quotes (looks like raquo)

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem12 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextmongolianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textmongolianAsbukTradsection produces Ѕ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

629 norwegian

Options variantlarr = bokmal or nynorsk

v14512See httpsenwikipediaorgwikiCyrillic_numerals

34

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 35: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

630 persian

Options numerals = western or eastern abjadjimnotaillarr = true or false

v103Set this to true if you want the abjad form of the number three to be ج ndashas in the manuscript tradition ndash instead of the modern usage ج

Commands abjad (see section 83)abjad

aemph (see section 62)aemph

631 portuguese

Options variantlarr = brazilian or portuguese

v145

632 russian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

indentfirstlarr = true or falsev146

By default all paragraphs are indented in Russian also those after achapter or section heading If this option is false the latter paragraphsare not indented as normal in LATEX

spelling = modern or oldThis option is for captions and date only not for hyphenation

35

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 36: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem13 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextrussianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textrussianAsbukTradpage produces ЛЅ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

633 samilarrv145

Currently support for Sami is limited to Northern Sami

634 sanskrit

Options scriptlarr = Devanagari Gujarati Malayalam Bengali Kannada Telugu

v102or LatinThevalue is passed to fontspec in caseswhere the respective ⟨script⟩fontis not defined This can be useful if you typeset Sanskrit texts in scriptsother than Devanagari

numeralslarr = Devanagari or Westernv145

13See httpsenwikipediaorgwikiCyrillic_numerals

36

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 37: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

635 serbian

Options script = Cyrillic or Latin numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem14 It supports numbers up to 999 999

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextserbianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textserbianAsbukTradpage produces ЛЗ

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

636 slovak

Options babelshorthandslarr = true or false

v146If this is turned on the following shorthands for Slovak are activated= for an explicit hyphen sign which is repeated at the beginning of the

next line when hyphenated as common in Slovak typesetting (onlyneeded with splithyphens=false)

| disables a ligature at this position~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)14See httpsenwikipediaorgwikiCyrillic_numerals

37

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 38: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

allows for a line break at this position (without hyphenation sign) a slash that allows for a subsequent line break As opposed to slash

hyphenation at the breakpoints preset in the hyphenation patterns isstill allowed

lsquo for Slovak left double quotes (looks like bdquo)rsquo for Slovak right double quotes (looks like ldquo)gt for Slovak left double guillemets (looks like raquo)lt for Slovak right double guillemets (looks like laquo)

splithyphenslarr = true or falsev146

According to Slovak typesetting conventions if a word with a hard hy-phen (such as je-li) is hyphenated at this hyphen a second hyphenationcharacter is to be inserted at the beginning of the line that follows the hy-phenation (je--li) By default this is done automatically (if you are usingLuaTEX the luavlna package is loaded to achieve this) Set this option tofalse to disable the feature

vlnalarr = true or falsev146

According to Slovak typesetting conventions single-letter words (non-syllable prepositions) must not occur at line ends Polyglossia takes care ofthis automatically by default (if you are using LuaTEX the luavlna packageis loaded to achieve this) Set this option to false to disable the feature

637 slovenian

Options localalph = true or falseIf true alpha-numeric counters will use a localized version including char-acters with caron (a b c č d hellip)

638 sorbian

Options variantlarr = lower or upper

v145 olddatelarr = true or false

v145If true today will use traditional Sorbian month names (ie it will besynonymous to oldtoday below)

38

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 39: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Commands oldtoday outputs the current date using traditional Sorbian montholdtoday

names even if olddate is false

639 spanish

Options variantlarr = spanish or mexican

v146 spanishoperatorslarr = all accented spaced none or false

v146Determines of and how math operators are localized to Spanish

accented causes some math operators to use accents where usual inSpanish (liacutem liacutem sup liacutem inf maacutex miacuten iacutenf moacuted)

spaced causes some math operators to use spaces where usual inSpanish (arc cos arc sen arc tg)

all activates accented and spaced and furthermore provides Spanishlocalizations of sin (sen) tan (tg) sinh (senh) and tanh (tgh)

none does no localization at all (default setting)

Commands larrv146

arcsen alias to arcsin (babel compatibility)arcsen arctg alias to arctan (babel compatibility)arctg sen alias to sin (babel compatibility)sen senh alias to sinh (babel compatibility)senh tg alias to tan (babel compatibility)tg tgh alias to tanh (babel compatibility)tgh spanishoperator allows you to define further localized operators Forspanishoperatorinstance spanishoperatorcotg defines a command cotg that outputscotg in math The optional argument of the command lets you specify thespelling if needed eg spanishoperator[arcctg]arcctg

640 syriac

Options numeralslarr = western (ie 1234567890) eastern (for which the Oriental

v101Arabic numerals are used ١٢٣٤٥٦٧٨٩٠) or abjad

Commands abjadsyriac (see section 83)abjadsyriac

39

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 40: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

aemph (see section 62)aemph

641 thai

Options numerals = thai or arabic

To insert word breaks you need to use an external processor See the document-ation to thai-latex and the file testthaitex that comes with this package

642 tibetan

Options numerals = tibetan or arabic

643 ukrainian

Options babelshorthands = true or falseIf this is turned on the following shorthands are activated- adds a hyphenation point that does still allow for hyphenation at the

points preset in the hyphenation patterns (as opposed to -)~ for a hyphen sign without a breakpoint Useful for cases where the

hyphen should stick at the following syllable| disables a ligature at this position allows for a line break at this position (without hyphenation sign)--- Cyrillic emdash in plain text-- Cyrillic emdash in compound names (surnames)-- Cyrillic emdash for denoting direct speech

numerals = arabic cyrillic-alph or cyrillic-tradUses either Arabic numerals or Cyrillic alphanumerical numbering Thetwo Cyrillic variants differ as follows

cyrillic-alph steps through the Cyrillic alphabet Thus it can onlybe used up to 30

cyrillic-trad (= cyrillic) uses a traditional Cyrillic alphanumericsystem15 It supports numbers up to 999 999

15See httpsenwikipediaorgwikiCyrillic_numerals

40

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 41: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Commands Asbuk produces uppercased Cyrillic alphanumerals for environmentsAsbuk

such as enumerate It steps through the Cyrillic alphabet and thus it canonly be used up to 30 The command takes a counter as argument egtextukrainianAsbuksection produces Е

asbuk same as Asbuk but in lowercaseasbuk

AsbukTrad same as Asbuk but using the traditional Cyrillic alphanu-AsbukTrad

meric numbering which supports numbers up to 999 999Eg textukrainianAsbukTradpage produces МА

asbukTrad same as AsbukTrad but in lowercaseasbukTrad

644 welsh

Options date = long or short

7 Modifying or extending captions date formats and lan-guage settings

Polyglossia uses the following macros to define language-specific captions (iestrings such as ldquochapterrdquo) date formats and additional language settings (⟨lang⟩is to be replaces with the respective language name)

captions⟨lang⟩ stores definitions of caption strings (such as in the casecaptions⟨lang⟩

of English defchapternameChapter) date⟨lang⟩ stores definitions of date formats (usually redefinitions ofdate⟨lang⟩

today in some cases also definitions of additional date commands) blockextras⟨lang⟩ stores macros that are to be executed when the lan-blockextras⟨lang⟩

guage ⟨lang⟩ is activated via selectlanguagecommand or the ⟨lang⟩environment

inlineextras⟨lang⟩ stores macros that are to be executed when the lan-inlineextras⟨lang⟩

guage ⟨lang⟩ is activated locally via text⟨lang⟩ command noextras⟨lang⟩ stores macros that are to be executed when the languagenoextras⟨lang⟩

⟨lang⟩ is closedIn order to redefine internal macros we recommend to use the commandgappto For compatibility with babel the command addto is also available tothe same effect For instance to change the chaptername for language linguayou can do this

41

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 42: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

gapptocaptionslinguadefchapternameCaput

Note that this needs to be done after the respective language has been loadedwith setmainlanguage or setotherlanguage

Specifically for package authors analogous commands are provided whichare only executed if a specific language variety is used As opposed to the macrosabove these refer to babel names Other than that the function is identical

captionsbbl⟨babelname⟩captionsbbl⟨babelname⟩

datebbl⟨babelname⟩datebbl⟨babelname⟩

blockextrasbbl⟨babelname⟩blockextrasbbl⟨babelname⟩

inlineextrasbbl⟨babelname⟩inlineextrasbbl⟨babelname⟩

noextrasbbl⟨babelname⟩noextrasbbl⟨babelname⟩

By default these macros are undefined If they are defined (eg by an externalpackage) they will be executed after their respective ⟨lang⟩ counterpart andthus can be used to overwrite definitions of the former Again use gappto todefinemodify these macros For instance to add a new caption footnotenameto the Swiss variety of German (babel name nswissgerman) you can do this

gapptocaptionsbblnswissgermandeffootnotenameFussnote

If you do this in a document preamble rather than in a package you need toembrace the redefinition by makeatletter and makeatother due to the inthe macro names

Finally as soon as the language has been switched (either inline or as a block)polyglossia executes the (by default empty) hook

polyglossialanguageswitchedpolyglossialanguageswitched

to which you can append arbitrary code (via gappto) that should be executedif (a particular) language is being activated This is done before any of theabove macros are issued (so you can still alter them) but at a point wherelanguagename babelname and languageid are already set so you can con-dition on specific languages in your code This hook is particularly provided forpackage authors

8 Script-specific numbering

Languages and scripts have specific numbering conventions Some use decimaldigits (eg Arabic numerals) some use alphabetic or alphanumerical notation(eg Roman numbering) In some cases different conventions are available (eg

42

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 43: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Mashriq or Maghrib numbering in Arabic script Arabic or Hebrew [= alphanu-meric] numbering in Hebrew)

If the latter is the case polyglossia provides language options which allowyou to select or switch to the suitable convention With the appropriate lan-guage option set polyglossia will automatically convert the output of internalLATEX counters to their localized forms for instance to display page chapter andsection numbers

For manual input of numbers macros are provided These convert Arabicnumeric input to the respective local decimal digit (see sec 82) alphanumericrepresentation (see sec 83) or whatever is appropriate (see sec 81) The possib-ilities are described in turn

81 General localization of numbering

As of 145 larr polyglossia provides a generic macro localnumeral which con-v145

localnumeral verts numbers to the current local form (which might be script-specific decimaldigit an alphabetic numbering or something else) For instance in an Arabic en-vironment localnumeral42 yields ٤٢ whereas in an Hebrew environment itresults in מב with numerals=hebrew and 42 with numerals=arabic Note thatas opposed to the various digitsmacros (described in sec 82) the argument oflocalnumeral must consist of numbers only

For larr the conversion of counters the starred version localnumeral isv145localnumeral provided This takes a counter as argument For instance in an Arabic environ-

ment localnumeralpage yields ٤٣For scripts with alphanumeric numbering the variants Localnumeral andLocalnumeral

Localnumeral provide the uppercased versionsLocalnumeral

All these macros provide the following options lang = local main or ⟨language⟩[lang=]

Output number in the local form of the currently active language for localthe main language of the document for main and any (loaded) languagefor ⟨language⟩ (eg localnumeral[lang=arabic]42)

82 Non-Western decimal digits

In addition larr to the generic macros described above polyglossia providesv111

language-specific conversion macros which can be used if the generic ones do

43

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 44: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

not suit the need16 The macros have the form ⟨script⟩digits They convertArabic numerical input and leave every other input untouched In an Arabiccontext for instance arabicdigits9182738543-X yields ٩١٨٢٧٣٨٥٤٣-X

Currently the following macros are provided arabicdigitsarabicdigits

bengalidigitsbengalidigits

devanagaridigitsdevanagaridigits

farsidigitsfarsidigits

kannadadigitskannadadigits

khmerdigitskhmerdigits

laodigitslaodigits

nkodigitsnkodigits

thaidigitsthaidigits

tibetandigitstibetandigits

83 Non-Latin alphabetic numbering

For languages which use special (non-Latin) alphanumerical notation17 dedic-ated macros are provided

They work in a similar way than the ⟨script⟩digits macros describedabove They take Arabic numerical input and output the respective value inthe local alphabetic numbering scheme (most of these macros are equivalent tolocalnumeral and Localnumeral in the respective context)

The following macros are provided abjad outputs Arabic abjad numbers according to the Mashriq varietiesabjad

Example abjad1863 yields غضسج abjadmaghribi outputs Arabic abjad numbers according to the Maghribabjadmaghribi

varieties Example abjadmaghribi1863 yields شظصج abjadsyriac outputs Syriac abjad numerals18abjadsyriac

16A third method are so-called TECKit fontmappings Those can be activated with the fontspecMapping option using arabicdigits farsidigits or thaidigits For instance if arabicfont isdefined with the option Mapping=arabicdigits typing textarabic2010 results in ٢٠١٠ Notethat this method has some drawbacks though for instance when the value of a counter has to bewritten and read from auxiliary files So please use this with care

17For instance see httpenwikipediaorgwikiGreek_numerals httpenwikipediaorgwikiAbjad_numerals httpenwikipediaorgwikiHebrew_numerals and httpenwikipediaorgwikiSyriac_alphabet

18A fine guide to numerals in Syriac can be found at httpwwwgarzocoukdocumentssyriac-numeralspdf

44

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 45: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

Example abjadsyriac463 yieldsܬܣܓ armeniannumeral produces Armenian alphabetic numbering Examplearmeniannumeral

armeniannumeral1863 yields ՌՊԿԳ belarusiannumeral produces Belarusian numbering with uppercasedbelarusiannumeral

variant (for alphanumerical variant) via Belarusiannumeral DependingBelarusiannumeral

on the numerals option in the Belarusian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin belarusiannumeral19 yields 19 withnumerals=cyrillic-trad belarusiannumeral19 results in іѳwith numerals=cyrillic-alph belarusiannumeral19 results in у

georgiannumeral produces Georgian alphabetic numberinggeorgiannumeral

Example georgiannumeral1863 yields ჩყჲგ greeknumeral produces Greek alphabetic numbering Greeknumeral out-greeknumeral

Greeknumeral puts uppercased variants Example greeknumeral1863 yields ͵αωξγʹGreeknumeral1863 results in ͵ΑΩΞΓʹ

hebrewnumeral Hebrewnumeral and Hebrewnumeralfinal generate vari-hebrewnumeral

Hebrewnumeral

Hebrewnumeralfinal

ants of Hebrew alphanumeric numerals The commands behave ex-actly as they do in babel hebrewnumeral outputs the numbers withoutany decoration Hebrewnumeral adds gereshayim before the last letterHebrewnumeralfinal uses in addition the final forms of Hebrew lettersExamples hebrewnumeral1750 yields אתשנ Hebrewnumeral1750yields אתשנ and Hebrewnumeralfinal1750 yields אתשן

mongoliannumeral produces Mongolian numbering with uppercasedmongoliannumeral

variant (for alphanumerical variant) via Mongoliannumeral DependingMongoliannumeral

on the numerals option in the Mongolian language selection this is eitherArabic digit or Cyrillic alphanumercial outputExample With numerals=latin mongoliannumeral19 yields 19 withnumerals=cyrillic-trad mongoliannumeral19 results in іѳwith numerals=cyrillic-alph mongoliannumeral19 results in у

russiannumeral produces Russian numbering with uppercased variantrussiannumeral

(for alphanumerical variant) via Russiannumeral Depending on theRussiannumeral

numerals option in the Russian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin russiannumeral19 yields 19 withnumerals=cyrillic-trad russiannumeral19 results in іѳwith numerals=cyrillic-alph russiannumeral19 results in у

serbiannumeral produces Serbian numbering with uppercased variantserbiannumeral

(for alphanumerical variant) via Serbiannumeral Depending on theSerbiannumeral

45

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 46: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

numerals option in the Serbian language selection this is either Arabicdigit or Cyrillic alphanumercial outputExample With numerals=latin serbiannumeral19 yields 19 withnumerals=cyrillic-trad serbiannumeral19 results in іѳwith numerals=cyrillic-alph serbiannumeral19 results in у

ukrainiannumeral produces Ukrainian numbering with uppercased vari-ukrainiannumeral

ant (for alphanumerical variant) via Ukrainiannumeral Depending onUkrainiannumeral

the numerals option in the Ukrainian language selection this is either Ar-abic digit or Cyrillic alphanumercial outputExample With numerals=latin ukrainiannumeral19 yields 19 withnumerals=cyrillic-trad ukrainiannumeral19 results in іѳwith numerals=cyrillic-alph ukrainiannumeral19 results in у

9 Footnotes in right-to-left context

With languages that use right-to-left scripts footnote apparatuses are usuallyplaced at the right side of the page bottom Consequently the footnote rule alsois to be placed right Things get more tricky though if right-to-left and left-to-right scripts are mixed Then youmight want to put the footnotes on some pagesleft on some right or even mix positions on a page Thus footnote handling inright-to-left context sometimes needs manual intervention This is described inwhat follows

91 Horizontal footnote position

When right-to-left languages are used the footnote command becomes sens-itive to the text directionality The footnote is always placed on the side that iscurrently the origin of direction on the left side of the page in LTR paragraphsand on the right in RTL paragraphs

For cases where this is not desired two additional footnote commands areprovided RTLfootnote and LTRfootnote LTRfootnote always places theRTLfootnote

LTRfootnote footnote on the left side notwithstanding the current directionality LikewiseRTLfootnote always places it on the right side Like footnote RTLfootnoteand LTRfootnote provide an optional argument to customize the number

46

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 47: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

92 Footnote rule length and position

The default placement of the footnote rule differs in X ETEX and LuaTEX output(this is due to differences in the bidi and luabidi packages) With X ETEX footnoterules are always placed left which is often wrong in RTL context With LuaTEXby contrast the rule is placed always right if the main language is a right-to-leftlanguage and always left if the main language is a left-to-right language whichis the right thing in many cases

In both cases you can change the default behavior as follows Put leftfootnoterule in the preamble to have all rules left-alignedleftfootnoterule

Put rightfootnoterule in the preamble to have all rules right-alignedrightfootnoterule

Put autofootnoterule in the preamble to have automatic placement de-autofootnoterule

pending on the context (see below for elaboration) Put textwidthfootnoterule in the preamble to have a rule that spans thetextwidthfootnoterule

whole text widthWith autofootnoterule the first footnote on the current page determines theplacement Note that this automatic can fail with footnotes at page boundariesthat differ in directionality from the first footnote on the page You can workaround such cases by switching to rightfootnoterule or leftfootnoteruleon these pages

Note also that the rule switches might interfere in bad ways with pack-ages or classes that redefine footnotes themselves This is also the reason whyautofootnoterule is not used by default

10 Calendars

101 Hebrew calendar (hebrewcalsty)

The package hebrewcalsty is almost a verbatim copy of hebcalsty that comeswith babel The command Hebrewtoday formats the current date in the HebrewHebrewtoday

calendar (depending of the current writing direction this will automatically seteither in Hebrew script or in roman transliteration)

102 Islamic calendar (hijricalsty)

This package computes dates in the lunar Islamic (Hijra) calendar19 It providestwo macros for the end-user The command

19It makes use of the arithmetical algorithm in chapter 6 of Reingold amp Gershowitz Calendricalcalculation the Millenium edition (Cambridge University Press 2001)

47

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 48: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

HijriFromGregorian⟨year⟩⟨month⟩⟨day⟩HijriFromGregorian

sets the counters Hijriday Hijrimonth and Hijriyear Hijritoday formats theHijritoday

Hijri date for the current day This command is now locale-awarelarr its outputv111

will differ depending on the currently active language Presently polyglossiarsquoslanguage definition files for Arabic Farsi Urdu Turkish andMalay provide a loc-alized version of Hijritoday If the formatting macro for the current languageis undefined the Hijri date will be formatted in Arabic or in roman translitera-tion depending of the current writing direction You can define a new format orredefine one with the command

DefineHijriDateFormat⟨lang⟩⟨code⟩DefineHijriDateFormat

The command Hijritoday also accepts an optional argument to add orsubtract a correction (in days) to the date computed by the arithmetical al-gorithm20 For instance if Hijritoday yields the date ldquo7 Rajab 1429rdquo (whichis the date that was displayed on the front page of aljazeeranet on 11th July2008) Hijritoday[1] would rather print ldquo8 Rajab 1429rdquo (the date indicated thesame day on the site gulfnewscom)

103 Farsi (jalālī) calendar (farsicalsty)

This package is an almost verbatim copy of Arabiftodaysty (in the Arabi pack-age) itself a slight modification of ftodaysty in FarsiTEX21 Here we have re-named the command ftoday to Jalalitoday Example today is 20 FarvardīnJalalitoday

1399

11 Auxiliary commands

The macrocharifavailable⟨char code⟩⟨substitution⟩ larrcharifavailable

v147 checks whether the character with the specified ⟨char code⟩ (ie unicode utf-16 code without preceding 0x) exists in the current font If so the character isprinted if not the ⟨substitution⟩ is printed

Example charifavailable1E9ESS prints the capital version of the Ger-man letter ⟨szlig⟩ if available (ie ẞ) else it prints the substitution digraph SS

20The Islamic calendar is indeed a purely lunar calendar based on the observation of the firstvisibility of the lunar crescent at the beginning of the lunar month so there can be differencesbetween different localities as well as between civil and religious authorities

21One day we may rewrite farsical from scratch using the algorithm in Reingold amp Gershowitz(ref n 19)

48

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 49: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

12 Accessing language information

The following is specifically relevant to package authors who need informationabout the languages in use In order to get such information polyglossia providesthe following macros

languagename stores the currently active (polyglossia) language namelanguagename

mainlanguagename stores the (polyglossia) language name of the mainmainlanguagename

document language languagevariant stores the language variant if set The macro is emptylanguagevariant

if no variant has been set mainlanguagevariant stores the language variant of the main documentmainlanguagevariant

language if set The macro is empty if no variant has been set babelname stores the corresponding name of the currently active lan-babelname

guage (variant) in babel This might not only be useful if you want tosupport both babel and polyglossia but also since this name is unique fora given language variety (eg ngerman german swissgerman etc) Notethat this macro is also defined for languages that are not supported in ba-bel In that case they are equal to the polyglossia language name

mainbabelname analogously stores the name of documentrsquos main lan-mainbabelname

guage (variant) in babel languageid⟨type⟩larr stores the identifier tag of the current languagelanguageid⟨type⟩

v147 Currently supported ⟨types⟩ bcp-47 (alias bcp47) IETF BCP-47 language identifier

mainlanguageid⟨type⟩ larr stores identifier tag of the main languagemainlanguageid⟨type⟩v147 Currently supported ⟨types⟩ see languageid

If you want to have a full list of loaded languagesvariants use the followingmacros

xpgloaded stores a comma-separated list of all loaded languages (poly-xpgloaded

glossia name) xpgvloaded stores a comma-separated list of all loaded variantsxpgvloaded

xpgbloaded stores a comma-separated list of babel names of all languagexpgbloaded

variants xpgbcploaded larr stores a comma-separated list of the BCP-47 IDs ofxpgbcploaded

v147 all language variants

Whether a language is loaded can be tested byiflanguageloaded⟨lang⟩⟨true⟩⟨false⟩iflanguageloaded

where ⟨lang⟩ is a polyglossia language name by

49

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 50: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

ifbabellanguageloaded⟨lang⟩⟨true⟩⟨false⟩ifbabellanguageloaded

where ⟨lang⟩ is a babel language name (see table 2 on p 9) or byiflanguageidloaded⟨type⟩⟨id⟩⟨true⟩⟨false⟩ larriflanguageidloaded

v147 where ⟨type⟩ is a supported language id type (such as bcp-47) and ⟨id⟩ is a lan-guage id (such as en-US see table 3 on p 4)

Finally if you want to know whether a specific language option has been setyou can useiflanguageoption⟨lang⟩⟨opt key⟩⟨opt value⟩⟨true⟩⟨false⟩ larriflanguageoption

v147

13 Acknowledgements (by Franccedilois Charette)

Polyglossia is notable for being a recycle box of previous contributions by otherpeople I take this opportunity to thank the following individuals whose splen-didwork hasmademy task almost trivial in comparision Johannes BRaams andthe numerous contributors to the babel package (in particular BoRis Lavva andothers for its Hebrew support) Alexej KRyuKov (antomega) Will RobeRtson(fontspec) Apostolos SyRopoulos (xgreek) Youssef JabRi (arabi) and VafaKhalighi (xepersian and bidi) The work of MojcaMiKlavec and ARthuR Reu-tenaueR on hyphenation patterns with their package hyph-utf8 is of course in-valuable I should also thank other individuals for their assistance in supportingspecific languages Yves Codet (Sanskrit) ZdenĕK WagneR (Hindi) MiKhalORen (Hebrew) SeRgey Astanin (Russian) Khaled Hosny (Arabic) SeRtaCcedil OumlYildiz (Turkish) Kamal Abdali (Urdu) and several other members of the X ETEXuser community notably EnRico GRegoRio who has sent me many useful sug-gestions and corrections and contributed the newXeTeXintercharclass mech-anism in xelatexini which is now used by polyglossia More recently KevinGodby of the Ubuntu Manual project has contributed very useful feedback bughunting and with the help of translators new language definition files for As-turian Lithuanian Occitan Bengali Malayalam Marathi Tamil and Telugu Itis particularly heartening to realize that this package is used to typeset a widely-read document in dozens of different languages Support for Lao was also addedthanks to BRian Wilson I also thank Alan Munn for kindly proof-readingthe penultimate version of this documentation And of course my gratitude alsogoes to Jonathan Kew the formidable author of X ETEX

50

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)
Page 51: Polyglossia: Modern multilingual typesetting with XeLaTeX ... · pl polish pms piedmontese pt portuguese pt-BR portuguese variant=brazilian pt-PT portuguese variant=portuguese[default]

14 More acknowledgements (by the current developmentteam)

Many thanks to all the people who have contributed bugfixes and new features topolyglossia since we took over In alphabetical order Ignas AniKevicius SinaAhmadi WouteR BolsteRlee ChRistian Buhtz ZgaRbul AndRey OlegDomanov Philipp Gesang Kevin Godby EnRico GRegoRio Khaled HosnyNajib IdRissi user julRoy67 Dohyun Kim Phil Kime MiKe KRoutiKovIvan KoKan Caleb Maclennan JosEacute ManceRa Yevgen PogRibnyi WillRobeRtson MaIumleul Rouette Elie Roux Hugo Roy Guy RutenbeRg Phil-ipp Stephani NiRanjan Tambe Keno WehR DominiK WujastyK SeRtaCcedil OumlYildiz MaKsim Zholudev Yan Zhou and Stefan Zlatinov Their respectivecontributions can be identified from the contributor statistics on GitHub

Among the ones who sent contributions directly to us we would like to es-pecially thank Claudio BeccaRi the indefatigable champion of Romance lan-guages and beyond Furthermore kudos go to MoRitz WemheueR (of bib-latex) who has helped a lot to improve polyglossia interaction with biblatex andcsquotes

Not at least we are very grateful for all bug reports and feature enhancementrequests we received from the numerous users we cannot list all here (but againyou can find all names on GitHub) Please go on with that you are keepingpolyglossia running

51

  • Introduction
  • Setting up multilingual documents
    • Activating languages
    • Supported languages
    • Relation to and use of Babel language names
    • Using IETF language tags
    • Global options
      • Language-switching commands
        • Recommended commands
        • Babel commands
        • Other commands
        • Setting up alias commands
          • Font setup
          • Adapting hyphenation
            • Hyphenation exceptions
            • Hyphenation disabling
              • Language-specific options and commands
                • afrikaans
                • arabic
                • armenian
                • belarusian
                • bengali
                • catalan
                • croatian
                • czech
                • dutch
                • english
                • esperanto
                • finnish
                • french
                • gaelic
                • georgian
                • german
                • greek
                • hebrew
                • hindi
                • hungarian
                • italian
                • korean
                • kurdish
                • lao
                • latin
                • malay
                • marathi
                • mongolian
                • norwegian
                • persian
                • portuguese
                • russian
                • sami
                • sanskrit
                • serbian
                • slovak
                • slovenian
                • sorbian
                • spanish
                • syriac
                • thai
                • tibetan
                • ukrainian
                • welsh
                  • Modifying or extending captions date formats and language settings
                  • Script-specific numbering
                    • General localization of numbering
                    • Non-Western decimal digits
                    • Non-Latin alphabetic numbering
                      • Footnotes in right-to-left context
                        • Horizontal footnote position
                        • Footnote rule length and position
                          • Calendars
                            • Hebrew calendar (hebrewcalsty)
                            • Islamic calendar (hijricalsty)
                            • Farsi (jalālī) calendar (farsicalsty)
                              • Auxiliary commands
                              • Accessing language information
                              • Acknowledgements (by Franccedilois Charette)
                              • More acknowledgements (by the current development team)