> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/it/lingue/01-multilingual-typesetting-on-overleaf-using-polyglossia-and-fontspec.md).

# Impaginazione multilingue su Overleaf usando polyglossia e fontspec

## Introduzione

Questo articolo fornisce una panoramica della composizione di documenti multilingue su Overleaf usando il compilatore XeLaTeX (o LuaLaTeX) in combinazione con i `fontspec` e `pacchetti polyglossia` pacchetti LaTeX.

Per molti, se non per la maggior parte, degli utenti la scelta predefinita del motore TeX è `pdfTeX`, che, a differenza di XeTeX e LuaTeX, non ha la capacità integrata di leggere file di testo [UTF-8](https://en.wikipedia.org/wiki/UTF-8) codificati. L’uso di pdfTeX rende molto complicata la composizione in LaTeX di alcune lingue, soprattutto di quelle che non usano un alfabeto basato sul latino. Alcuni pacchetti—come [`inputenc`, `fontenc` e](/latex/it/lingue/05-arabic.md) [`arabtex`](/latex/it/lingue/05-arabic.md)—forniscono supporto a pdfTeX per la composizione di lingue e sistemi di scrittura non latini, ma non tutti i glifi e i caratteri potrebbero essere supportati o resi correttamente nel PDF di output, anche se hai usato l’opzione `utf8` o `utf8x` con `inputenc`.

Per una discussione approfondita su UTF-8, Unicode e i motori XeTeX/LuaTeX, l’articolo di Overleaf [Unicode, UTF-8 e testo multilingue: un’introduzione](/latex/it/articoli-approfonditi/51-unicode-utf-8-and-multilingual-text-an-introduction.md) è una lettura affascinante.

## Entrano in scena XeTeX e LuaTeX

I motori XeTeX e LuaTeX possono leggere/elaborare direttamente testo codificato in UTF-8; di conseguenza, offrono supporto nativo per Unicode—possono anche [lavorare direttamente con font TrueType e OpenType](/latex/it/caratteri/03-xelatex.md) . Queste caratteristiche li rendono una scelta naturale per la composizione di documenti multilingue o non latini in LaTeX, producendo output come questi:

![](/files/b8e38b82cfa39796df8a2754aada57f947e7e473) ![](/files/f5a34ea3612c0e69d62c017541c0fd4173b51194) ![](/files/2d764e41b304454b216e97c18f592dbca496ddfd)

Questi esempi si possono trovare nella Galleria di Overleaf: [Come scrivere testo multilingue con diversi sistemi di scrittura in LaTeX su Overleaf](https://www.overleaf.com/latex/examples/how-to-write-multilingual-text-with-different-scripts-in-latex/wfdxqhcyyjxz) e ["Thank-You" multilingue](https://www.overleaf.com/latex/templates/multilingual-thank-you/wjmrnnqkstyf).

Se stai cercando di comporre cinese, giapponese e coreano, dai un’occhiata a questi articoli:

* [Cinese](/latex/it/lingue/06-chinese.md)
* [Giapponese](/latex/it/lingue/11-japanese.md)
* [Coreano](/latex/it/lingue/12-korean.md)

Xe(La)TeX è ancora utile per queste lingue, ma sono disponibili motori TeX più specializzati, in particolare [progettati per la composizione di lingue CJK](/latex/it/altri-argomenti/45-tex-primitives-listed-by-cjk-tex-engine.md)—come [pTeX](https://ctan.org/pkg/ptex?lang=en) per la composizione del giapponese.

Nota che, se il cursore sembra comportarsi in modo anomalo أثناء la modifica del testo in alcune lingue su Overleaf, potresti fare clic sul pulsante Overleaf **Menu** (situato sopra l’elenco dei file del progetto) e modificare l’opzione “Font Family”. Potresti anche provare [a cambiare le preferenze del font monospaziato del tuo browser](https://www.howtogeek.com/208552/how-to-change-the-default-fonts-in-your-web-browser/) oppure usare invece la vista Rich Text di Overleaf. Tuttavia, al momento della scrittura, le viste Source e Rich Text potrebbero non supportare ancora pienamente la modifica del testo da destra a sinistra al livello di funzionalità che ci proponiamo di raggiungere.

## Modificare il compilatore del progetto

La `fontspec` e `pacchetti polyglossia` i pacchetti richiedono il compilatore XeLaTeX o LuaLaTeX, quindi dovrai configurare il tuo progetto Overleaf per usare uno di questi compilatori. Le istruzioni dettagliate si trovano nel nostro articolo [Scegliere un compilatore LaTeX](/latex/it/altri-argomenti/08-choosing-a-latex-compiler.md) ma ecco un breve video che mostra come impostare il compilatore del tuo progetto:

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/2HDpWlJuNR50hknbpxfQdu/93cdc17ef2c6c77249a1c7c76b34a817/choosingcompiler.mp4>" %}

Una volta che compili con XeLaTeX o LuaLaTeX, puoi (dovresti) rimuovere i `inputenc` e `fontenc` pacchetti dal preambolo del file .tex, perché questi motori in grado di gestire Unicode presumeranno che i file di input (testo) siano codificati in UTF-8. Per inciso, tutti i file di testo caricati su Overleaf vengono convertiti in UTF-8, quindi dovresti di solito usare `utf8` con `inputenc` quando lavori con i compilatori pdfLaTeX e LaTeX su Overleaf.

## Se l’intero documento riguarda una sola lingua

Quando si usa il `fontspec` pacchetto, potresti cavartela impostando solo un font principale (serif), un font sans serif e probabilmente un font monospaziato progettato per supportare la lingua che stai componendo—c’è però un punto da tenere presente, ma ci torneremo più avanti nell’articolo. Per esempio, se l’intero documento è in greco, con alcune parole in inglese, puoi semplicemente scrivere

```latex
\usepackage{fontspec}
\setmainfont[Script=Greek]{GFS Artemisia}
\setsansfont[Script=Greek]{GFS Neohellenic}
\setmonofont[Script=Greek]{Noto Mono}
. . .
Το Lorem Ipsum είναι \textsf{απλά} ένα κείμενο χωρίς νόημα
για τους επαγγελματίες της \texttt{τυπογραφίας} και στοιχειοθεσίας.
```

Puoi scegliere i font da una [lista di font TrueType e OpenType disponibili](https://www.overleaf.com/help/193). Il `Ligatures=TeX` l’opzione viene aggiunta automaticamente per `\setmainfont` e `\setsansfont`, quindi non devi aggiungerla tu. (`\setromanfont` è un alias di `\setmainfont`.)

Il codice LaTeX sopra produce il seguente output:

![](/files/b100d345b191d78cd597ba012cccd38f401c94f1)

## Più lingue/sistemi di scrittura nello stesso documento: introduzione a polyglossia

Se il tuo documento contiene una quantità non banale di testo in più lingue, il `pacchetti polyglossia` pacchetto è utile per occuparsi delle convenzioni tipografiche specifiche della lingua e della sillabazione.

```latex
\usepackage{fontspec}
\setmainfont{FreeSerif}
\setsansfont{FreeSans}
\setmonofont{FreeMono}

\usepackage{polyglossia}
\setdefaultlanguage{french}
\setotherlanguages{english,russian,thai}

\begin{document}
\begin{abstract}
Le Lorem Ipsum est simplement du faux texte employé dans
la composition et la mise en page avant impression.
\end{abstract}

Merci. \textenglish{Thank you.} \textrussian{Спасибо.} Et plus de
texte en français!

Le Lorem Ipsum est le faux texte standard ...

\begin{english}
Lorem Ipsum is simply dummy text ...
\end{english}

\begin{russian}
Lorem Ipsum - это текст-`\textsf{рыба}', часто используемый в
\texttt{печати} и вэб-дизайне. ...
\end{russian}

\begin{thai}
\XeTeXlinebreaklocale "th_TH"
\textenglish{Lorem Ipsum} คือ เนื้อหาจำลองแบบเรียบๆ ที่ใช้กันในธุรกิจงานพิมพ์หรืองานเรียงพิมพ์
\end{thai}
```

![](/files/9a9bb47cd812519d9aa7b1b8f3216d1c71bba428)

`pacchetti polyglossia` consente di impostare la lingua principale del documento con `\setdefaultlanguage` (il valore predefinito è l’inglese) e le lingue “altre” (eventualmente multiple) con `\setotherlanguages`. (`\setmainlanguage` è un alias di `\setdefaultlanguage`.) Se prevedi di usare solo un’altra lingua straniera, puoi usare il singolare `\setotherlanguage`. I nomi delle lingue sono gli stessi usati da `babel`.

Abbiamo preparato un piccolo esempio di un documento (principalmente) in francese che contiene anche del testo in inglese, russo e thai. Abbiamo deciso di usare i font FreeSerif, FreeSans e FreeMono.

Poiché la lingua principale del documento è `french`, la `abstract` l’ambiente produce automaticamente l’intestazione “Résumé”. Nota come, alla fine del primo paragrafo, il punto esclamativo sia composto usando la convenzione tipografica francese: è separato da “français” anche se segue immediatamente la parola `français` nel codice sorgente.

Nel testo principale, brevi frammenti di testo in inglese, cirillico e thai possono essere inclusi in un paragrafo di testo francese con `\textenglish{Thank you}`, `\textrussian{Спасибо}` e `\textthai{ขอบคุณ}`. In generale, puoi usare `\textLANGUAGE{...}` per comporre testo in qualsiasi `LANGUAGE` che sia stata dichiarata da `\setdefaultlanguage` e `\setotherlanguages`. Poiché il font principale (serif) del documento è FreeSerif, e FreeSerif contiene glifi per gli alfabeti latino, cirillico e thai (e molti altri!), `fontspec` e `pacchetti polyglossia` può usarlo per rendere tutti questi testi nel PDF di output.

Per paragrafi più lunghi di testo in lingue straniere/altre lingue, è consigliato usare `\begin{LANGUAGE}`...`\end{LANGUAGE}`, ad es. `\begin{russian}`...`\end{russian}`, `\begin{thai}`...`\end{thai}`. Nel caso dell’arabo non puoi usare `\begin{arabic}`...`\end{arabic}`; dovrai scrivere `\begin{Arabic}`...`\end{Arabic}` invece, mentre `\textarabic{...}` è ancora valido.

Per alcune lingue possono essere necessarie alcune considerazioni: per esempio, all’interno dell’ambiente `thai` le parole `Lorem Ipsum` devono essere racchiuse in un comando `\textenglish{...}` (oppure `\textfrench{...}`) per assicurarsi che vengano rese usando i glifi del sistema di scrittura latino.

A questo punto potresti chiederti: se FreeSerif è così versatile e contiene comunque glifi per il russo e il thai, perché dovremmo ancora usare `\textrussian`, `\begin{english}`...`\end{english}` ecc.? Non sarebbe ridondante? Vediamo cosa succede quando rimuoviamo gli `\begin{english}`...`\end{english}` e `\begin{russian}`...`\end{russian}` ambienti:

![](/files/20c9119a91e034f912d564aee1d9d3e376706e2c)

Certamente, tutti i glifi latini e cirillici vengono resi nel PDF di output, ma nota che alcune parole ora vengono sillabate in modo errato: ‘unk-nown’ e ‘unchan-ged’—e стандартной non è sillabata affatto. Senza gli ambienti di cambio lingua, il compilatore pensa che questi elementi di testo siano ancora in francese e cerca di comporli secondo le convenzioni francesi. Il compilatore prova ad applicare le regole di sillabazione francesi che, naturalmente, producono risultati errati. Ecco perché la tipografia e la composizione sono molto più che semplice progettazione e scelta dei font: sono discipline molto specifiche per lingua e cultura.

Rileggendo il nostro primo esempio greco, ora vediamo perché è una buona idea caricare `pacchetti polyglossia` e usare `\setdefaultlanguage{greek}`: per assicurarsi che il documento sia composto seguendo le convenzioni greche.

## Mescolare lingue da destra a sinistra (RTL) e da sinistra a destra (LTR)

Devi fare attenzione quando componi una miscela di sistemi di scrittura da destra a sinistra (RTL), come l’arabo o l’ebraico, e sistemi di scrittura da sinistra a destra (LTR) nello stesso documento. Considera il seguente piccolo documento in arabo con una parola inglese, usando Amiri come font principale:

```latex
\usepackage{polyglossia}
\setdefaultlanguage{arabic}
\setmainfont{Amiri}
\begin{document}
ما هو differentiation
\end{document}
```

che produce:

![](/files/4872fa1ad5c264014b08411270befb6d25634dba)

Il testo viene automaticamente impostato da destra a sinistra, iniziando dal margine destro della pagina. La parola “differentiation” viene composta correttamente come testo da sinistra a destra—ma aspetta, *non è così*! Nell’output appare come “dffirentiation”! Cosa sta succedendo?

Il font Amiri ha effettivamente glifi per gli alfabeti latini ma qui il testo `differentiation` non è contrassegnato come inglese: il compilatore tratta `differentiation` come testo da destra a sinistra, come se fosse una sequenza di caratteri arabi. Durante la composizione, la sequenza originale `iff` viene elaborata come `ffi` (cioè come testo RTL) e viene composto il glifo di legatura [ligature](https://en.wikipedia.org/wiki/Typographic_ligature) di Amiri per “ffi”. Contrassegnare la parola con `\textenglish{...}` ne garantisce l’interpretazione corretta come testo da sinistra a destra.

```latex
\setmainfont{Amiri}
\setotherlanguage{english}
\newfontfamily\englishfont{TeX Gyre Termes}
\begin{document}
מה הוא \textenglish{differentiation}
```

![](/files/61477e5611d4926ffe4a5d81173fa864c0929717)

**Nota:** Se sei abituato ai comandi del `babel` pacchetto, sarai felice di sapere che i comandi `\selectlanguage`, `\foreignlanguage` e l’ambiente `otherlanguage` sono supportati anche da `pacchetti polyglossia`.

## Opzioni specifiche per lingua

Alcune lingue supportano opzioni aggiuntive per la personalizzazione; per esempio, `greek` accetta un’opzione `variant=ancient`, `mono` o `poly` per il greco antico, monotono o politonico; `hindi` può essere configurato con `numerals=western` o `devanagari`. Consulta la [documentazione del pacchetto polyglossia](http://texdoc.net/pkg/polyglossia) per i dettagli.

Queste possono essere specificate quando si carica la lingua:

```latex
\setdefaultlanguage[variant=poly]{greek}
\setotherlanguage[numerals=western]{hindi}
```

oppure in seguito in qualsiasi momento:

```latex
\setkeys{greek}{variant=ancient}
```

o persino localmente per un ambiente specifico:

```latex
\begin{greek}[variant=ancient]
...
\end{greek}
```

## Specificare i font per lingue specifiche

Puoi specificare il font usato per lingue diverse. Supponiamo che tu voglia comporre tutto il testo inglese (contenuto nel nostro esempio precedente) in corsivo; potresti scrivere:

```latex
\newfontfamily\englishfont{FreeSerif Italic}
```

![](/files/5505bd4445c2db4fd68e7da080550d66c8c6b7eb)

Naturalmente puoi usare qualcosa di ancora più sontuoso:

```latex
\newfontfamily\englishfont{Chancery Uralic}
```

![](/files/6b2e6f33e0d43449be29954ccfa202f407e1a740)

Questo meccanismo di impostare font diversi per lingue o sistemi di scrittura diversi è particolarmente importante quando si usa un font principale che *non* abbia glifi per tutti i sistemi di scrittura o le lingue del tuo documento. Supponiamo ora di decidere di usare Caladea come font principale del documento:

```latex
\setmainfont{Caladea}
```

Alla compilazione vedremmo il seguente errore:

```
Package polyglossia Error: The current roman font
non contiene il sistema di scrittura cirillico!

(polyglossia)                Definisci
\cyrillicfont con \newfontfamily.

Consulta la documentazione del pacchetto polyglossia per
una spiegazione.
Digita H <return> per assistenza immediata.
 ...

l.15 \select@language {russian}

Package polyglossia Error: The current roman font
non contiene il sistema di scrittura thai!

(polyglossia)                Definisci
\thaifont con \newfontfamily.

Consulta la documentazione del pacchetto polyglossia per
una spiegazione.
Digita H <return> per assistenza immediata.
 ...

l.23 \select@language {thai}
...
```

Ora siamo obbligati a specificare quali font usare per i sistemi di scrittura cirillico e thai. Anche in questo caso, puoi fare riferimento ai [lista di font TrueType e OpenType disponibili](https://www.overleaf.com/help/193) su Overleaf.

```latex
\newfontfamily\cyrillicfont[Script=Cyrillic]{Charis SIL}
\newfontfamily\thaifont[Script=Thai]{Garuda}
```

![](/files/e490676cb97aff4d4067c756d1744bb5d9241d01)

**Nota**: è fuori dallo scopo di questo articolo affrontare questioni relative alla scelta di combinazioni di font esteticamente piacevoli e tipograficamente compatibili.

Nota che abbiamo definito `\cyrillicfont` anziché `\russianfont`, cioè abbiamo definito un font per il *sistema di scrittura* cirillico invece che per la *lingua*. Il vantaggio di definire `\cyrillicfont` è che se, per esempio, `serbian` è anch’essa una lingua definita nel tuo progetto, allora `\textserbian` userà automaticamente il `\cyrillicfont`definito. Se avessi definito solo `\russianfont`, allora usando `\textserbian` sarebbe di nuovo comparso l’avviso “the current roman font does not contain the Cyrillic script” e dovresti definire `\cyrillicfont` comunque — *a meno che* voi *non intendessi* usare un font diverso per il testo serbo!

Un altro scenario simile è il sistema di scrittura devanagari *sistema di scrittura*, che è usato per le *lingue*hindi e sanscrito; oppure il sistema di scrittura arabo usato per l’arabo e il farsi (persiano).

```latex
\setdefaultlanguage{english}
\setotherlanguages{hindi,sanskrit}
\newfontfamily\devanagarifont[Script=Devanagari]{Lohit Devanagari}
...
Hindi: \texthindi{हिन्दी}
Sanskrit: \textsanskrit{संस्कृतम्}
```

![](/files/2c32c090dbc9c2ca01892f8b759ccfe57fb957e0)

Quando si usa `\newfontfamily` è necessario specificare il `Script`, altrimenti alcuni glifi potrebbero essere resi in modo errato; per esempio, se avessimo scritto solo `\newfontfamily\thaifont{Garuda}` il risultato composto potrebbe essere sbagliato (immagine a sinistra qui sotto)—l’output corretto si ottiene aggiungendo `[Script=Thai]`.

Sbagliato: ![](/files/162013cba90e766c9058633511d2628fae46e7c0) Corretto: ![](/files/4de9f3a8591421c982c7521a7613a8384f477115)

## Definizione di altre famiglie di font

Diamo un’occhiata a un altro esempio, questa volta con l’ebraico:

```latex
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage[numerals=hebrew]{hebrew}
\setotherlanguage{english}
\newfontfamily\hebrewfont[Script=Hebrew]{Hadasim CLM}
\begin{document}
\section{מבוא}
È una verità consolidata che l’attenzione del lettore sarà distratta da un testo leggibile quando guarderà la sua impaginazione.  -
\end{document}
```

![](/files/fe9b75ebcbca176598e8f37dc35a37319f510b4c)

Fin qui tutto bene. Supponiamo ora di usare un modello originariamente creato per un documento in inglese, che imposta le intestazioni di sezione in carattere sans serif usando `titlesec` pacchetto:

```latex
\RequirePackage{titlesec}
\titleformat{\section}{\Large\sffamily\bfseries}{\thesection}{1em}{}
\usepackage{polyglossia}
\setdefaultlanguage[numerals=hebrew]{hebrew}
...
```

Ci troviamo di fronte al messaggio di errore:

```
Package polyglossia Error: The current roman font
non contiene il sistema di scrittura ebraico!

(polyglossia)                Definisci
\hebrewfont con \newfontfamily.

Consulta la documentazione del pacchetto polyglossia per
una spiegazione.
Digita H <return> per assistenza immediata.
 ...

l.27 \section{מבוא}
```

Questo è un po’ confuso: non avevamo già definito `\hebrewfont` come Hadasim CLM? Beh, è davvero perché non *abbiamo specificato un font sans serif per l’ebraico*. Rimediamo aggiungendo una definizione per `\hebrewfontsf`:

```latex
\newfontfamily\hebrewfontsf[Script=Hebrew]{Miriam CLM}
```

E ora abbiamo l’output:

![](/files/39ec74d77bf0bdfbbfb53e27749ca44be1633f5b)

Se dovesse essere necessario, potremmo anche definire un font monospaziato da usare con `\hebrewfonttt`.

## Ringraziamenti

Tutti gli snippet di lorem ipsum, in varie lingue, provengono da [`https://lipsum.com`](https://lipsum.com).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/it/lingue/01-multilingual-typesetting-on-overleaf-using-polyglossia-and-fontspec.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
