|
1 | 1 | --- |
2 | 2 | layout: "lesson" |
3 | 3 | lang: "el" |
4 | | -title: "Language-specifics for English" |
5 | | -description: "This lesson shows language-specific details for typesetting with LaTeX in English. The focus is on hyphenation, where UK and US traditions are different." |
| 4 | +title: "Γράφοντας ελληνικά με το LaTeX" |
| 5 | +description: "Αυτό το μάθημα παρουσιάζει τα βασικά στοιχεία για την υποστήριξη της ελληνικής γλώσσας από το LaTeX." |
6 | 6 | next: "extra-01" |
7 | | -toc-anchor-text: "English Language-specifics" |
8 | | -toc-description: "Typesetting with LaTeX in English." |
| 7 | +toc-anchor-text: "Γράφοντας ελληνικά με το LaTeX" |
| 8 | +toc-description: "Υποστήριξη της ελληνικής γλώσσας στο LaTeX." |
9 | 9 | --- |
10 | 10 |
|
11 | | -# Language-specifics for English |
| 11 | +# Υποστήριξη της ελληνικής γλώσσας στο LaTeX |
12 | 12 |
|
13 | 13 | <span |
14 | | - class="summary">This lesson shows language-specific details for typesetting with LaTeX in English with a focus on hyphenation, where UK and US traditions are different.</span> |
| 14 | + class="summary">Αυτό το μάθημα παρουσιάζει τα βασικά στοιχεία για την υποστήριξη της ελληνικής γλώσσας στο LaTeX.</span> |
15 | 15 |
|
16 | | -## Hyphenation |
| 16 | +## Γενικά |
17 | 17 |
|
18 | | -LaTeX was written for use with English, and so there are very few |
19 | | -language-specific issues facing authors in English. The main one |
20 | | -is hyphenation: UK and US traditions are different. LaTeX starts out |
21 | | -using US English patterns, but you can switch to UK ones using `babel`. |
| 18 | +Στο [μάθημα 14](./lesson-14) είδαμε κάποιες βασικές πληροφορίες για τη χρήση του LaTeX για γλώσσες εκτός της αγγλικής. |
| 19 | + |
| 20 | +Η εργασία με τα ελληνικά στο LaTeX είναι πλέον εύκολη, χάρη στις μηχανές `lualatex` και `xelatex`, |
| 21 | +οι οποίες υποστηρίζουν Unicode. Έτσι, οι ελληνικοί χαρακτήρες μπορούν να |
| 22 | +πληκτρολογηθούν απευθείας στο αρχείο με τον κώδικα LaTeX (αρκεί αυτό να είναι κωδικοποιημένο σε UTF-8 |
| 23 | +και όχι σε κωδικοποιήσεις 8-bit των ελληνικών όπως ISO-8859-7 ή Windows-1253). |
| 24 | +Επίσης, οι μηχανές αυτές χρησιμοποιούν τις γραμματοσειρές TrueType και OpenType που έχουμε στον υπολογιστή μας, |
| 25 | +πολλές από τις οποίες διαθέτουν πλήρες σύνολο ελληνικών χαρακτήρων. |
| 26 | + |
| 27 | +Η παλαιότερη μηχανή `pdflatex` δεν υποστηρίζει Unicode και έτσι πρέπει να χρησιμοποιηθούν ειδικά πακέτα |
| 28 | +για την υποστήριξη της ελληνικής γλώσσας (όπως και όλων των άλλων γλωσσών που δεν χρησιμοποιούν το βασικό λατινικό (αγγλικό) αλφάβητο). |
| 29 | +Επίσης, η μηχανή αυτή χρησιμοποιεί γραμματοσειρές ειδικής μορφής, και έτσι υπάρχουν πολύ λιγότερες τέτοιες γραμματοσειρές που περιέχουν τους ελληνικούς χαρακτήρες. |
| 30 | + |
| 31 | +Πέρα, όμως, από την εισαγωγή των χαρακτήρων, για τη σωστή υποστήριξη της ελληνικής γλώσσας απαιτούνται και πολλές άλλες λειτουργίες, όπως η υποστήριξη συλλαβισμού των ελληνικών λέξεων, η μετάφραση τυπικών όρων («Κεφάλαιο», «Πίνακας περιεχομένων» κ.λπ.), η αντίστοιχη εμφάνιση της ημερομηνίας, η προσαρμογή της αλφαβητικής αρίθμησης («α, β, γ» αντί για «a, b, c»), κ.ά. Στο LaTeX υπάρχουν μερικά πακέτα που υλοποιούν αυτές τις λειτουργίες: |
| 32 | + |
| 33 | +- Το πακέτο [babel](https://ctan.org/pkg/babel) παρέχει υποστήριξη για πολλές γλώσσες, σε όλες τις σύγχρονες μηχανές (`lualatex`, `xelatex`, `pdflatex`). |
| 34 | +- Το πακέτο [polyglossia](https://ctan.org/pkg/polyglossia) παρέχει υποστήριξη για πολλές γλώσσες, αλλά μόνο στις μηχανές `lualatex` και `xelatex`. |
| 35 | +- Το πακέτο [xgreek](https://ctan.org/pkg/xgreek) παρέχει υποστήριξη μόνο για την ελληνική γλώσσα, και μόνο στις μηχανές `lualatex` και `xelatex`. |
| 36 | + |
| 37 | +Παρακάτω θα παρουσιάσουμε τη χρήση του πακέτου `babel`, καθώς μπορεί να χρησιμοποιηθεί με όλες τις μηχανές LaTeX και είναι αυτό που υποστηρίζεται επίσημα από το έργο LaTeX. Επίσης, θα επικεντρωθούμε στη χρήση της μηχανής `lualatex`, η οποία είναι πλέον η προτεινόμενη μηχανή για χρήση με το LaTeX. |
| 38 | + |
| 39 | + |
| 40 | +## Εργασία με το LuaLaTeX |
| 41 | + |
| 42 | +Το ακόλουθο είναι ένα τυπικό παράδειγμα εγγράφου που περιέχει ελληνικό κείμενο. |
| 43 | + |
| 44 | +```latex |
| 45 | +%!TEX program=lualatex |
| 46 | +
|
| 47 | +\documentclass{report} |
| 48 | +
|
| 49 | +\usepackage[greek]{babel} |
| 50 | +\babelfont{rm}{NewComputerModern10} |
| 51 | +
|
| 52 | +\begin{document} |
| 53 | +
|
| 54 | +\chapter{Πρώτο κεφάλαιο} |
| 55 | +
|
| 56 | +\today |
| 57 | +
|
| 58 | +Όλοι οι άνθρωποι γεννιούνται ελεύθεροι και ίσοι στην αξιοπρέπεια και τα δικαιώματα. |
| 59 | +Είναι προικισμένοι με λογική και συνείδηση, |
| 60 | +και οφείλουν να συμπεριφέρονται μεταξύ τους με πνεύμα αδελφοσύνης. |
| 61 | +
|
| 62 | +Κάθε άνθρωπος δικαιούται να επικαλείται όλα τα δικαιώματα και όλες τις ελευθερίες |
| 63 | +που προκηρύσσει η παρούσα Διακήρυξη, χωρίς καμία απολύτως διάκριση, ειδικότερα ως |
| 64 | +προς τη φυλή, το χρώμα, το φύλο, τη γλώσσα, τις θρησκείες, τις πολιτικές |
| 65 | +ή οποιεσδήποτε άλλες πεποιθήσεις, την εθνική ή κοινωνική καταγωγή, την περιουσία, |
| 66 | +τη γέννηση ή οποιαδήποτε άλλη κατάσταση. |
| 67 | +
|
| 68 | +\end{document} |
| 69 | +``` |
| 70 | + |
| 71 | +Στη γραμμή 5 φορτώνουμε το πακέτο `babel` με την επιλογή `greek`. Παρατηρήστε ότι ο όρος «Κεφάλαιο» και η ημερομηνία εμφανίζονται στα ελληνικά, και επίσης οι λέξεις είναι σωστά συλλαβισμένες. |
| 72 | + |
| 73 | +Στη γραμμή 6 χρησιμοποιούμε την εντολή `\babelfont` για να ορίσουμε τη βασική γραμματοσειρά (`rm`) του κειμένου. Η εντολή αυτή παρέχει έναν πιο εύχρηστο τρόπο ορισμού γραμματοσειρών σε σχέση με τις εντολές του πακέτου `fontspec` και μάλιστα ανά γλώσσα για μεικτά κείμενα (αν, π.χ. η γραμματοσειρά που χρησιμοποιούμε για τα αγγλικά δεν περιέχει ελληνικούς χαρακτήρες). Εδώ χρησιμοποιήσαμε τη γραμματοσειρά [New Computer Modern](https://ctan.org/pkg/newcomputermodern), η οποία υπάρχει στις διανομές LaTeX και περιέχει τους ελληνικούς χαρακτήρες· θα μπορούσατε όμως να χρησιμοποιήσετε οποιαδήποτε γραμματοσειρά έχετε στον υπολογιστή σας, π.χ. |
| 74 | + |
| 75 | +```latex |
| 76 | +\babelfont{rm}{Times New Roman} |
| 77 | +\babelfont{sf}{Arial} |
| 78 | +\babelfont{tt}{Courier New} |
| 79 | +``` |
| 80 | +{: .noedit :} |
| 81 | + |
| 82 | + |
| 83 | +Αν το έγγραφό μας περιέχει και αγγλικό κείμενο, πρέπει να προσθέσουμε την επιλογή `english` όταν φορτώνουμε το πακέτο `babel`: |
| 84 | + |
| 85 | +```latex |
| 86 | +\usepackage[english, greek]{babel} |
| 87 | +``` |
| 88 | +{: .noedit :} |
| 89 | + |
| 90 | +Η _τελευταία_ επιλογή καθορίζει την κύρια γλώσσα του εγγράφου: είναι η γλώσσα στην οποία εμφανίζονται οι τυπικοί όροι (όπως «Κεφάλαιο», «Πίνακας περιεχομένων» κ.λπ.) και η ημερομηνία, καθώς και η γλώσσα που χρησιμοποιείται για τον συλλαβισμό των λέξεων. |
| 91 | + |
| 92 | + |
| 93 | + |
| 94 | +Με την εντολή `\selectlanguage{english}` αλλάζουμε τη γλώσσα του εγγράφου σε αγγλικά (από εκείνο το σημείο και μέχρι να υπάρξει άλλη τέτοια εντολή, π.χ. `\selectlanguage{greek}`). Για σύντομα τμήματα κειμένου στην άλλη γλώσσα μπορούμε να χρησιμοποιήσουμε τις εντολές `\foreignlanguage{english}{english text}` ή αντίστοιχα `\foreignlanguage{greek}{ελληνικό κείμενο}`. Η επισήμανση της γλώσσας είναι χρήσιμη ώστε αν η λέξη βρεθεί στο τέλος της γραμμής να συλλαβιστεί σωστά. |
| 95 | + |
| 96 | +Είναι εμφανές ότι η εναλλαγή γλώσσας με αυτό τον τρόπο δεν είναι καθόλου βολική. Ευτυχώς, επειδή το αγγλικό και το ελληνικό αλφάβητο είναι διαφορετικά μεταξύ τους, το `babel` με το `lualatex` μπορεί να ανιχνεύσει αυτόματα τη γλώσσα σε κάθε σημείο του κειμένου. Για να γίνει αυτό, πρέπει να φορτώσουμε λίγο διαφορετικά τις γλώσσες: |
| 97 | + |
| 98 | +```latex |
| 99 | +%!TEX program=lualatex |
| 100 | +
|
| 101 | +\documentclass{report} |
| 102 | +
|
| 103 | +\usepackage{babel} |
| 104 | +\babelprovide[ |
| 105 | + import=el, |
| 106 | + main, |
| 107 | + onchar=ids fonts, |
| 108 | +]{greek} |
| 109 | +\babelprovide[ |
| 110 | + import, |
| 111 | + onchar=ids fonts |
| 112 | +]{english} |
| 113 | +\babelfont{rm}{NewComputerModern10} |
| 114 | +
|
| 115 | +\begin{document} |
| 116 | +
|
| 117 | +\chapter{Πρώτο κεφάλαιο} |
| 118 | +
|
| 119 | +\today |
| 120 | +
|
| 121 | +Όλοι οι άνθρωποι γεννιούνται ελεύθεροι και ίσοι στην αξιοπρέπεια και τα δικαιώματα. |
| 122 | +Είναι προικισμένοι με λογική και συνείδηση, |
| 123 | +και οφείλουν να συμπεριφέρονται μεταξύ τους με πνεύμα αδελφοσύνης. |
| 124 | +
|
| 125 | +Κάθε άνθρωπος δικαιούται να επικαλείται όλα τα δικαιώματα και όλες τις ελευθερίες |
| 126 | +που προκηρύσσει η παρούσα Διακήρυξη, χωρίς καμία απολύτως διάκριση, ειδικότερα ως |
| 127 | +προς τη φυλή, το χρώμα, το φύλο, τη γλώσσα, τις θρησκείες, τις πολιτικές |
| 128 | +ή οποιεσδήποτε άλλες πεποιθήσεις, την εθνική ή κοινωνική καταγωγή, την περιουσία, |
| 129 | +τη γέννηση ή οποιαδήποτε άλλη κατάσταση. |
| 130 | +
|
| 131 | +\chapter{Δεύτερο κεφάλαιο} |
| 132 | +
|
| 133 | +\today |
| 134 | +
|
| 135 | +All human beings are born free and equal in dignity and rights. |
| 136 | +They are endowed with reason and conscience |
| 137 | +and should act towards one another in a spirit of brotherhood. |
| 138 | +
|
| 139 | +Everyone is entitled to all the rights and freedoms set forth in this Declaration, |
| 140 | +without distinction of any kind, such as race, colour, sex, language, religion, |
| 141 | +political or other opinion, national or social origin, property, |
| 142 | +birth or other status. |
| 143 | +\end{document} |
| 144 | +``` |
| 145 | + |
| 146 | +Παρατηρήστε ότι οι τυπικοί όροι και η ημερομηνία εμφανίζονται παντού στα ελληνικά, την κύρια γλώσσα του κειμένου. |
| 147 | + |
| 148 | +Επισημαίνεται ότι η αυτόματη ανίχνευση της γλώσσας δουλεύει με τον τρόπο αυτό μόνο με το `lualatex`. Για το `xelatex` υπάρχει άλλος μηχανισμός, που όμως δεν καλύπτεται εδώ. |
| 149 | + |
| 150 | + |
| 151 | +## Εργασία με το pdflatex |
| 152 | + |
| 153 | +Για ιστορικούς λόγους, δίνουμε ένα παράδειγμα ελληνικού κειμένου για το `pdflatex`. |
22 | 154 |
|
23 | 155 | ```latex |
24 | 156 | \documentclass{article} |
25 | | -\usepackage[T1]{fontenc} |
26 | | -\usepackage[UKenglish]{babel} |
| 157 | +\usepackage[LGR]{fontenc} |
| 158 | +\usepackage[english, greek]{babel} |
| 159 | +
|
27 | 160 | \begin{document} |
28 | | -Some text |
| 161 | +
|
| 162 | +\today |
| 163 | +
|
| 164 | +Όλοι οι άνθρωποι γεννιούνται ελεύθεροι και ίσοι στην αξιοπρέπεια και τα δικαιώματα. |
| 165 | +Είναι προικισμένοι με λογική και συνείδηση, |
| 166 | +και οφείλουν να συμπεριφέρονται μεταξύ τους με πνεύμα αδελφοσύνης. |
| 167 | +
|
| 168 | +Κάθε άνθρωπος δικαιούται να επικαλείται όλα τα δικαιώματα και όλες τις ελευθερίες |
| 169 | +που προκηρύσσει η παρούσα Διακήρυξη, χωρίς καμία απολύτως διάκριση, ειδικότερα ως |
| 170 | +προς τη φυλή, το χρώμα, το φύλο, τη γλώσσα, τις θρησκείες, τις πολιτικές |
| 171 | +ή οποιεσδήποτε άλλες πεποιθήσεις, την εθνική ή κοινωνική καταγωγή, την περιουσία, |
| 172 | +τη γέννηση ή οποιαδήποτε άλλη κατάσταση. |
| 173 | +
|
| 174 | +\selectlanguage{english} |
| 175 | +
|
| 176 | +\today |
| 177 | +
|
| 178 | +All human beings are born free and equal in dignity and rights. |
| 179 | +They are endowed with reason and conscience |
| 180 | +and should act towards one another in a spirit of brotherhood. |
| 181 | +
|
| 182 | +Everyone is entitled to all the rights and freedoms set forth in this Declaration, |
| 183 | +without distinction of any kind, such as race, colour, sex, language, religion, |
| 184 | +political or other opinion, national or social origin, property, |
| 185 | +birth or other status. |
29 | 186 | \end{document} |
30 | 187 | ``` |
| 188 | + |
| 189 | +Εδώ απαιτείται επιπλέον η χρήση του πακέτου `fontenc` για τη σωστή κωδικοποίηση των ελληνικών χαρακτήρων. Δεν θέτουμε κάποια γραμματοσειρά και χρησιμοποιείται η προεπιλεγμένη γραμματοσειρά του `pdflatex`· η εντολή `\babelfont` δεν μπορεί να χρησιμοποιηθεί εδώ καθώς αυτή αφορά μόνο τις μηχανές `lualatex` και `xelatex`. Τέλος, δεν υπάρχει μηχανισμός για αυτόματη ανίχνευση της γλώσσας, και πρέπει να χρησιμοποιήσουμε την εντολή `\selectlanguage` (ή την `\foreignlanguage`) για την αλλαγή γλώσσας. |
| 190 | + |
| 191 | +## Περισσότερες πληροφορίες |
| 192 | + |
| 193 | +Το CTAN έχει ειδικές ενότητες με όλα τα [πακέτα που σχετίζονται με την ελληνική γλώσσα](https://ctan.org/topic/greek) καθώς και με όλες τις [γραμματοσειρές που υποστηρίζουν ελληνικά](https://ctan.org/topic/font-greek). Αυτά αφορούν κυρίως το `pdflatex`, το οποίο είχε περιορισμούς και δυσκολίες στη χρήση άλλων γλωσσών εκτός από την αγγλική, όπως έχουμε αναφέρει. |
| 194 | + |
| 195 | +## Ασκήσεις |
| 196 | + |
| 197 | +Στο δεύτερο παράδειγμα, με το ελληνικό και αγγλικό κείμενο που χρησιμοποιεί το `lualatex`, δοκιμάστε να μην φορτώσετε το πακέτο `babel`, βάζοντας σε σχόλιο τις γραμμές 5-15 και προσθέτοντας |
| 198 | + |
| 199 | +```latex |
| 200 | +\usepackage{fontspec} |
| 201 | +\setmainfont{NewComputerModern10} |
| 202 | +``` |
| 203 | +{: .noedit :} |
| 204 | + |
| 205 | + |
| 206 | +Θα παρατηρήσετε ότι το κείμενο εμφανίζεται κανονικά, καθώς η μηχανή `lualatex` υποστηρίζει πλήρως το Unicode, όμως δεν γίνεται συλλαβισμός των ελληνικών λέξεων, και οι όροι όπως «Κεφάλαιο» και η ημερομηνία εμφανίζονται στα αγγλικά. |
| 207 | + |
| 208 | +Στο παράδειγμα με το `pdflatex` δοκιμάστε να βάλετε σε σχόλιο τη γραμμή 19 που αλλάζει τη γλώσσα σε αγγλικά, και παρατηρήστε τι συμβαίνει στο αγγλικό κείμενο. |
| 209 | + |
| 210 | +Αν γνωρίζετε κάποια άλλη ξένη γλώσσα εκτός από τα αγγλικά, δοκιμάστε να φτιάξετε ένα έγγραφο και με αυτή τη γλώσσα. Παρατηρήστε όμως ότι, αν η γλώσσα χρησιμοποιεί το λατινικό αλφάβητο (π.χ. γαλλικά, ιταλικά), δεν θα μπορεί να γίνει αυτόματη ανίχνευση της γλώσσας και θα πρέπει να επισημαίνετε εσείς τη γλώσσα κάθε τμήματος του κειμένου. |
| 211 | + |
0 commit comments