Ελληνικα στο TeX/LaTeX με το XeTeX

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Μετάβαση σε: πλοήγηση, αναζήτηση

Μέχρι πριν λίγο καιρο ήταν σχετικά περίπλοκο να γράψει κανείς Ελληνικά στο TeX/LaTeX. Όχι πια.
Το XeTeΧ μας βοηθάει να γράψουμε Ελληνικά γρήγορα και απλά, χρησιμοποιώντας UTF-8 κωδικοποίση για τα αρχεία εισόδου και με την δυνατότητα άμεσης χρήσης γραμματοσειρών TrueType και OpenType.

Εγκατάσταση

Το ΧeTeX συμπεριλαμβάνεται στη διανομή TeX Live, η οποία έχει αντικαταστήσει την tetex, που δεν συντηρείται πλέον. Τα παρακάτω αναφέρονται σε Linux. Για LaTeX σε Windows δείτε ξεχωριστά παρακάτω.

Ubuntu

Από το software center μπορούμε να εγκαταστήσουμε το πακέτο texlive-full ώστε να έχουμε όλα τα πακέτα που μπορεί να χρειαστούμε τώρα ή στο μέλλον. Αυτό θα χρειαστεί πάνω από 3GB ελεύθερο χώρο και αρκετό χρόνο για download, οπότε εναλλακτικά μπορούμε να εγκαταστήσουμε μονάχα τα πακέτα που μας ενδιαφέρουν.

Η αντίστοιχη εντολή για εγκατάσταση μέσα από ένα terminal είναι:

    sudo apt-get install texlive-full

ή, αντί για texlive-full, όποια πακέτα χρειαζόμαστε. (βλ. στις οδηγίες για Debian παρακάτω αναλυτικότερα)

Debian Sid

Τα παρακάτω έχουν δοκιμαστεί για linux box που τρέχει Debian Sid. Η εγκατάσταση του TeX/LaTeX γίνεται από τα πακέτα της διανομής τα οποία είναι διαθέσιμα από τα repositories του Debian. Με λίγα λόγια, ολόκληρη η εγκατάσταση του TeX/LaTeX έγινε χρησιμοποιώντας το apt ("μέσα απ το synaptic" που λέμε). Το κρίσιμο πακέτο, είναι το texlive-xetex το οποίο παρέχει το XeTeX.

Για να σας δουλέψει το hyphenation όπως περιγράφεται παρακάτω χρειάζεται να εγκαταστήσετε τα εξής:

    aptitude install texlive-xetex texlive-lang-greek texlive-latex-base texlive-latex-recommended

Επίσης μπορούμε να κατεβάσουμε κατευθείαν ολόκληρη τη διανομή (πακέτο texlive-full) το οποίο περιλαμβάνει οτιδήποτε μπορεί να χρειαστούμε τώρα ή στο μέλλον.

Gentoo Linux

Aρχικά πρέπει να απεγκαταστήσουμε το tetex(αν υπάρχει ήδη στο σύστημά μας).

    #emerge -C tetex
    #emerge --depclean

Eπειδή ενδέχεται να έχουν μείνει dead symlinks απ το tetex, γράφουμε στο terminal

    $find /usr/bin -name "*" -type l ! -xtype f ! -xtype d

και διαγράφουμε τα dead symlinks. Το πιθανότερο είναι να χρειαστεί να διαγράψουμε μόνο το /usr/bin/pdftex:

    #rm /usr/bin/pdflatex

To TeX Live 2007 είναι ~ masked sto portage tree. Στο /etc/portage/package.use προσθέτουμε την γραμμή:

   app-text/texlive  xetex

για να κάνουμε compile το Tex Live με το USE flag xetex, ώστε να εγκατασταθεί και το xetex(καθώς και το xelatex και άλλα πακέτα για το ΧeTeX),
και στη συνέχεια προσθέτουμε το Tex Live 2007 και όλα τα masked dependencies στο /etc/portage/package.keywords.
Τελικά, για να το εγκαταστήσουμε

    #emerge -av texlive

TeX Live CD/DVD

Αν δεν μπορείτε να βρείτε το TeX Live στα πακέτα της διανομής σας, μπορείτε να χρησιμοποιήσετε το TeX Live CD/DVD.

Ελληνικά στο ΧeTeX

Γραμματοσειρές

Αν το XeTeX είναι εγκατεστημένο, για να χρησιμοποιήσουμε Ελληνικά σε κάποιο έγγραφο tex, προσθέτουμε στην αρχή τις παρακάτω γραμμες:

\usepackage[cm-default]{fontspec}
\setromanfont{FreeSerif}
\setsansfont{FreeSans}
\setmonofont{FreeMono}

Εδώ έχουν χρησιμοποιηθεί οι ελεύθερες γραμματοσειρές freefont, αλλά μπορεί κανείς να χρησιμοποιήσει οποιαδήποτε TrueType γραμματοσειρά (γραμματοσειρές που η κατάληξή τους ειναι .ttf). To σύστημα δουλεύει και με OpenType γραμματοσειρές, και μάλιστα είναι ο καλύτερος τρόπος για να χρησιμοποιήσουμε την γραμματοσειρά Computer Modern, που έχουμε συνηθίσει από το LaTeX.

Για έναν αναλυτικότερο οδηγό σχετικά με τις γραμματοσειρές στο XeTeX, καθώς και για περισσότερες λεπτομέρειες για το fontspec, μπορείτε να βρείτε σε αυτόν τον οδηγό.

Υπάρχει ένα σημείο που αξίζει προσοχής: Για να αναγνωρίσει το XeTeX σωστά τις γραμματοσειρές, πρέπει να γράψουμε "σωστά" το όνομά τους (π.χ. "FreeSans" και όχι "Freesans" ή "Free Sans"). Ένας εύκολος τρόπος για να βρούμε τα σωστά ονόματα είναι με την εντολή fc-list. Αν για παράδειγμα θέλουμε να χρησιμοποιήσουμε DejaVu, ένα

fc-list | grep -i deja

αρκεί για να μάθουμε ότι τα σωστά ονόματα είναι "DejaVu Serif", "DejaVu Sans" και "DejaVu Sans Mono".

Ακολουθεί μια λίστα ελεύθερων OpenType γραμματοσειρών, υψηλής ποιότητας, που υποστηρίζουν ελληνικά. Αξίζει να σημειωθεί ότι στο Tex μας ενδιαφέρει πρωτίστως η υψηλή ποιότητα εκτύπωσης, και όχι τόσο η αναπαράσταση σε οθόνη υπολογιστή. Γι αυτό μην σας παραξενέψει αν δεν φαίνονται τόσο ελκυστικές στην οθόνη του υπολογιστή σας.

Computer Modern

Πώς γίνεται να έχουμε την κλασσική LaTeX γραμματοσειρά στο XeTeX; Στο πρώτο γινόταν χρήση Type1 γραμματοσειρών, ενώ το δεύτερο συνεργάζεται πολύ εύκολα με truetype/opentype γραμματοσειρές.

Για να έχουμε και ελληνικά σε Computer Modern θα πρέπει να κατεβάσουμε το Computer Modern Unicode σε opentype από εδώ (μόνο το link για τα otf fonts). Έπειτα πρέπει να φτιάξουμε ένα ~/.fonts directory, να μεταφέρουμε εκεί όλα τα .otf αρχεία που βρίσκονται μέσα στο αρχείο που κατεβάσαμε και τέλος να τρέξουμε

fc-cache -f -v

τώρα με

fc-list | grep CMU

βλέπουμε όλες τις Computer Modern Unicode γραμματοσειρές του συστήματος :)

GFS

Η Εταιρεία Ελληνικών Τυπογραφικών Στοιχείων (Greek Font Society) έχει δημιουργήσει μια σειρά από ελεύθερες (και μη) γραμματοσειρές, που μπορεί να βρείτε ενδιαφέρουσες. Κάποιες από αυτές είναι διαθέσιμες στις περισσότερες διανομές GNU/Linux (πακέτα ttf-gfs-* στο Debian). Μια πολύ όμορφη από αυτές τις γραμματοσειρές, η οποία θυμίζει την Computer Modern είναι η GFS Didot. Παράδειγμα χρήσης:

    \setmainfont[Mapping=tex-text]{GFS Didot}

Linux Libertine

Εξίσου καλής ποιότητας είναι και η σειρά γραμματοσειρών Linux Libertine (πακέτο ttf-linux-libertine στο Debian, προσοχή, δεν διαθέτει τις opentype εκδόσεις τις γραμματοσειράς, θα πρέπει να τις εγκαταστήσετε ξεχωριστά αν δεν σας καλύπτουν οι truetype).

Ηyphenation

Το hyphenation είναι οι κανόνες συλλαβισμού των λέξεων μιας γλώσσας, έτσι ώστε το σύστημα να μπορεί αυτόματα να διακόψει μια λέξη στο τέλος μιας σειράς και να την συνεχίσει στην επόμενη. Αυτή η δυνατότητα έχει ως αποτέλεσμα καλύτερο justification του κειμένου (συμμετρική στοίχιση).

Για ελληνικό hyphenation στο XeTeX χρησιμοποιείται το πακέτο xgreek, το οποίο από το TeXLive 2008 και μετά έχει μπει στο κύριο κομμάτι της βιβλιοθήκης.

Εάν χρειάζεται να βάλουμε μόνοι μας το xgreek, ακολουθούμε τη διαδικασία που περιγράφεται εδώ.

Kωδικοποίηση Χαρακτήρων

Τα Ελληνικά που θα γράψουμε θα πρέπει να έχουν κωδικοποίηση UTF-8 και όχι ISO-8859-7. Ένας καλός τρόπος να το εξασφαλίσουμε αυτό, εκτός απ το να χρησιμοποιούμε το αντίστοιχο locale στο σύστημά μας, είναι να δουλεύουμε με κάποιον editor που να χειρίζεται καλά τα encodings. (βλ. παρακάτω)

Mεταγλώττιση

Η μεταγλώττιση του αρχείου tex γίνεται με την εντολή xelatex. Το xelatex παράγει κατευθείαν pdf, όχι dvi ή ps όπως το latex, και έτσι η εμπειρία χρήσης του είναι ανάλογη της χρήσης του pdflatex.

Template

Ακολουθεί ένα γενικό template που ίσως σας φανεί χρήσιμο αν ξεκινάτε τώρα, ή θέλετε να έχετε κάπου συγκεντρωμένες κάποιες εντολές.

Σημείωση: Αν προσπαθήσετε να μεταγλωττίσετε κατευθείαν αυτό το κείμενο θα δείτε ένα μήνυμα λάθους επειδή δεν έχετε κάποιο αρχείο "solution.pdf" στο ίδιο directory με τον κώδικα. Αντικαταστήστε το με το όνομα κάποιας εικόνας που έχετε.

% Εκτύπωση σε χαρτί A4, μία σελίδα ανά φύλλο, με ξεχωριστή σελίδα για τον τίτλο,
% σε γραμματοσειρά 12pt και format άρθρου.
\documentclass[a4paper,oneside,titlepage,12pt]{article}

% Προσοχή στο [cm-default], χωρίς αυτό μπορεί να μην λειτουργούν τα
% μαθηματικά σύμβολα σε ορισμένες εγκαταστάσεις του xelatex!
\usepackage[cm-default]{fontspec}
\usepackage{xunicode}
\usepackage{xltxtra}

% Ελληνικό Hyphenation, αφαιρέστε το αν δεν έχετε εγκατεστημένο το xgreek.
\usepackage{xgreek}

% Γραμματοσειρά
\setmainfont[Mapping=tex-text]{DejaVu Sans}

% Χρήσιμο πακέτο για εισαγωγή εικόνων jpg/png ή άλλων εγγράφων pdf.
\usepackage{graphicx}

% Macro που δίνει το μέγιστο επιτρεπτό μέγεθος σε μια εικόνα,
% χωρίς να παραβιάζει τα όρια του LaTeX.
\makeatletter
\def\maxwidth{%
  \ifdim\Gin@nat@width>\linewidth
    \linewidth
  \else
    \Gin@nat@width
  \fi
}
\makeatother

% Ενεργοποιήστε την ακόλουθη γραμμή αν δεν θέλετε στοίχιση στις νέες παραγράφους.
%\parindent=0in


\title{Τίτλος}
\author{Ονοματεπώνυμο}
\date{} %default: no date

\begin{document}

\maketitle

\section{Πρόβλημα 1}
\subsection{Ερώτημα 1}

Text

%[!hbp] είναι οδηγία τοποθέτησης του figure που είναι ένας πίνακας.
\begin{figure} [!hbp]
\centering
% 3 στήλες που αριστερά, δεξιά και ανάμεσα στο κάθε στοιχείο έχουν κάθετη γραμμή.
\begin{tabular}{|c|c|c|}
% Πάνω οριζόντια γραμμή
\hline
1 & 2 & 3\\
\hline
% bold 5
4 & \bf 5 & 6\\
\hline
7 & 8 & 9\\
\hline
\end{tabular}
\caption{Πληροφορίες με αυτόματη αρίθμηση}
\end{figure}

\begin{figure} [!hbp]
\centering
% Εξασφαλίζουμε το μέγιστο μέγεθος για την εικόνα, χωρίς να χαλάμε τις
% αναλογίες της. Το `solution.pdf` πρέπει να βρίσκεται στο ίδιο directory
% με το αρχείο μας.
\includegraphics[width=\maxwidth]{solution.pdf}
\end{figure}

\begin{displaymath}
\sum_{n = 0}^\infty {e^x}
\end{displaymath}

\end{document}

Editors

Για τη συγγραφή ενός κειμένου σε Latex αρκεί ένας οποιοσδήποτε text editor. Υπάρχουν όμως και εξειδικευμένα περιβάλλοντα που μπορούν να κάνουν τη ζωή μας ευκολότερη. Μια λίστα με γνωστούς TeX editors μπορείτε να βρείτε εδώ.

Vim

Ο vim είναι ένας πολύ δυνατός και ευέλικτος text editor, που μπορεί φυσικά να χρησιμοποιηθεί και για τη συγγραφή κειμένου tex. Με την προσθήκη του latexsuite (πακέτο vim-latexsuite στο Debian), μεταμορφώνεται σε full featured IDE.

Αν πάλι θέλετε κάτι πιο απλό, αρκεί ένα Makefile και μερικά key mappings στο vimrc σας.

" File: ~/.vim/ftplugin/tex.vim
setlocal spell! spelllang=el,en<CR>
set spellsuggest=best,3

" Saves file before executing make.
set autowrite

noremap <F5> :silent make view<CR>

Για να εγκαταστήσετε ορθογραφικό έλεγχο για ελληνικά στον vim 7.x, ακολουθήστε τις οδηγίες στο http://betabug.ch/blogs/ch-athens/835.

Το ακόλουθο είναι ένα Makefile template για το GNU Make.

# File: Makefile-tex
# Description: A simple template for xelatex compilation.
# Usage: Set TARGET and include this file.

.PHONY: clean distclean

VIEWER := xpdf # Change this to your prefered viewer, e.g. evince or kpdf.
LATEX := xelatex

all: $(TARGET)

%.pdf: %.tex
	$(LATEX) $<

view: $(TARGET)
	$(VIEWER) $<

clean:
	$(RM) $(basename $(TARGET)).{aux,log,out,toc}

distclean: clean
	$(RM) $(TARGET) $(EXTRA_CLEANS)

Μπορείτε να το τοποθετήσετε στον κατάλογο με το project σας, και να γράψετε το εξής Makefile:

 TARGET := myprojectname.pdf
 include Makefile-tex

Kile

Το Kile είναι ένα γραφικό περιβάλλον για την συγγραφή TeX/LaTeX (ενα IDE για TeX) της κατηγορίας των KDE εφαρμογών.

Για να κάνουμε το Kile να δουλέυει με το XeTeX, πάμε Settings -> Configure Kile -> Tools -> Build -> Select a Tool -> Latex όπου πάμε στην καρτέλα General και στην επιλογή command βάζουμε xelatex.

Για να κάνουμε compile ένα tex αρχείο, πατάμε το κουμπί LaTeX και έχουμε το αρχείο σε pdf μας.

πηγη: το blog του igiann

Για ορθογραφικό έλεγχο εγκαθιστούμε το πακέτο aspell-el αν δεν το έχουμε ήδη εγκατεστημένο. Έπειτα ρυθμίζουμε το Kile ως εξής: Settings->Configure Kile->Editor->Editing->Spellcheck->Default language: Greek

Texmaker

Το Texmaker είναι ελεύθερο περιβάλλον συγγραφής κειμένου σε Latex, που τρέχει τόσο σε GNU/Linux όσο και σε Windows ή MacOS X.

Για να το χρησιμοποιήσουμε σε συνδυασμό με το xelatex, πάμε στο Options->Configure Texmaker και αντικαθιστούμε την εντολή pdflatex με xelatex, φροντίζοντας βέβαια από 'δω και πέρα να χρησιμοποιούμε μόνο την εντολή για pdf generation. Αυτό γίνεται ευκολότερα επιλέγοντας στο Quick Build, PdfLatex + View PDF.

Για ορθογραφικό έλεγχο χρησιμοποιεί τα λεξικά του OpenOffice. Χρειαζόμαστε συγκεκριμένα τα αρχεία el_GR.dic και el_GR.aff (υπάρχουν μέσα στο αρχείο .oxt του extension, το οποίο ανοίγει με έναν archive manager). Ρυθμίζουμε τον Texmaker ως εξής: Options->Configure Texmaker->Editor->Spelling dictionary: el_GR.dic. Για να λειτουργήσει ο ορθογραφικός έλεγχος χρειαζόμαστε και τα δυο αρχεία στο ίδιο directory.

Windows

Με τον συνδυασμό του TexLive και του Texmaker, είναι δυνατόν να γράψουμε tex αξιοπρεπώς και σε Windows. Ακολουθούν μερικές συνοπτικές οδηγίες για τα βήματα που χρειάζονται.

Εγκατάσταση

  • Κατεβάζουμε τον installer του Texlive, που περιέχει και το xetex.
  • Αποσυμπιέζουμε το αρχείο και εκτελούμε το install-tl-advanced.bat.
  • Επιλέγουμε "full scheme" για εγκατάσταση όλων των διαθέσιμων πακέτων. Θα διευκόλυνε πολύ αυτό, ώστε να μην μας λείψει ποτέ κάποιο πακέτο. Ωστόσο χρειάζεται χρόνο και χώρο, αφού συνολικά είναι πάνω από 3GB.
  • Από το site του Texmaker, κατεβάζουμε και εγκαθιστούμε τον installer για Windows.

Στην ιστοσελίδα του texlive υπάρχουν αναλυτικές οδηγίες εγκατάστασης. Αν δεν επιθυμούμε πλήρη εγκατάσταση, σιγουρευόμαστε τουλάχιστον ότι είναι επιλεγμένο το xetex στο μενού Standard Collections.

Ρυθμίσεις

Είναι σημαντικό να ρυθμίσουμε το Texmaker κατάλληλα, ώστε να γράφουμε UTF-8 ελληνικά. Εκτός από τις παραπάνω ρυθμίσεις για το xelatex (βλ. "Editors" παραπάνω), πηγαίνουμε στο Options -> Configure Texmaker -> Editor, όπου στο Editor font encoding επιλέγουμε UTF-8, και κάνουμε restart την εφαρμογή.

Γραμματοσειρές

Οι γραμματοσειρές που αναφέρθηκαν παραπάνω δεν είναι όλες διαθέσιμες. Μπορούν όμως να χρησιμοποιηθούν οι ήδη εγκατεστημένες truetype γραμματοσειρές (Arial, Times, κλπ), ή να τις εγκαταστήσουμε:

Κατεβάζουμε τα αρχεία των γραμματοσειρών, και τα κάνουμε extract με ένα πρόγραμμα σαν το 7zip. Έπειτα πάμε στο Control Panel -> Fonts. Πηγαίνουμε στο File -> Install new font..., εντοπίζουμε το φάκελο που κάναμε extract τις γραμματοσειρές, και τις εγκαθιστούμε. Επαναλαμβάνουμε για όσες γραμματοσειρές θέλουμε.

Οι γραμματοσειρές της Εταιρείας Ελληνικών Τυπογραφικών Στοιχείων (GFS) υπάρχουν στη διανομή TeXLive και εάν εγκαταστήσουμε ολόκληρη τη διανομή τότε θα είναι ήδη διαθέσιμες.

Προβλήματα / Troubleshooting

Δεν εμφανίζονται ορισμένα μαθηματικά σύμβολα

Το πρόβλημα αυτό έχει αναφερθεί με ορισμένες εκδόσεις του xetex στο Debian. Μια λύση είναι να περνάμε την παράμετρο cmu-default στο πακέτο fontspec, όπως φαίνεται και στο #Template:

\usepackage[cm-default]{fontspec}

Πρόβλημα με τόνους σε Qt-based editors σε Windows

Εάν χρησιμοποιείτε κάποιον editor μέσω Windows, ο οποίος χρησιμοποιεί τις βιβλιοθήκες Qt (π.χ. TexMaker, Kile, TexStudio), είναι πιθανόν να παρατηρήσετε ένα πρόβλημα με τους τόνους. Συγκεκριμένα, μπορεί πολλές φορές να μην τονίζεται μια λέξη παρόλο που έχετε πατήσει το πλήκτρο. Σε Linux και MacOS X φαίνεται να μην υπάρχει πρόβλημα. Δυστυχώς δεν έχει βρεθεί κάποια λύση τη στιγμή που γράφονται αυτές οι γραμμές.

Εξωτερικά links

Acknowledgment

Τα παραπάνω ξεκίνησαν από ένα ποστ του Μιχάλη Παπακυριάκου στο φόρουμ της κοινότητας.