# Εγχειρίδιο GTK-Doc

1.18.1

Εγχειρίδιο χρήσης του GTK-Doc για προγραμματιστές.

Chris Lyttle

     chris@wilddev.net

Dan Mueth

     d-mueth@uchicago.edu

Stefan Kost

     ensonic@users.sf.net

Έργο GTK-Doc

    gtk-doc-list@gnome.org

2000, 2005 Dan Mueth και Chris Lyttle
2007-2011 Stefan Sauer (Kost)

Χορηγείται άδεια αντιγραφής, διανομής και/ή τροποποίησης του παρόντος εγγράφου υπό τους όρους της έκδοσης 1.1 της Ελεύθερης Άδειας Τεκμηρίωσης GNU (GFDL), ή οποιασδήποτε μεταγενέστερης έκδοσής αυτής από το Ίδρυμα Ελεύθερου Λογισμικού (FSF), χωρίς αμετάβλητα τμήματα, κείμενα εξωφύλλου και κείμενα οπισθοφύλλου. Συμπεριλαμβάνεται αντίγραφο της άδειας.

Πολλές από τις ονομασίες που χρησιμοποιούνται από εταιρείες για την διαφοροποίηση των προϊόντων και υπηρεσιών τους έχουν καταχωρισθεί ως εμπορικά σήματα. Σε όποιο σημείο της τεκμηρίωσης GNOME τυχόν εμφανίζονται αυτές οι ονομασίες, και εφόσον τα μέλη του Έργου τεκμηρίωσης GNOME έχουν λάβει γνώση αυτών των εμπορικών σημάτων, οι ονομασίες ή τα αρχικά αυτών θα γράφονται με κεφαλαίους χαρακτήρες.

1.19
05 Jun 2013
ss bug fixes
1.18
14 Sep 2011
ss bug fixes, speedups, markdown support
1.17
26 Φεβ 2011
sk διόρθωση σφάλματος
1.16
14 Ιαν 2011
sk διορθώσεις σφαλμάτων και βελτιώσεις διάταξης
1.15
21 Μαίου 2010
sk bug and regression fixes
1.14
28 Μαρτίου 2010
sk διορθώσεις σφαλμάτων και βελτιώσεις επίδοσης
1.13
18 Δεκεμβρίου 2009
sk ανανέωση σπασμένου συμπιεσμένου αρχείου
1.12
18 Δεκεμβρίου 2009
sk νέα χαρακτηριστικά και διορθώσεις σφαλμάτων
1.11
16 Νοεμβρίου 2008
mal Μετάβαση σε GNOME doc-utils
Τζένη Πετούμενου epetoumenou@gmail.com
2009 Τζένη Πετούμενου
Θάνος Τρυφωνίδης tomtryf@gmail.com
2012 Θάνος Τρυφωνίδης
Δημήτρης Σπίγγος dmtrs32@gmail.com
2013 Δημήτρης Σπίγγος

## Εισαγωγή

Αυτό το κεφάλαιο αποτελεί μια εισαγωγή στο GTK-Doc. Περιγράφει το GTK-Doc και τον τρόπο χρήσης του.

### Τι είναι το GTK-Doc;

Το GTK-Doc χρησιμοποιείται για την τεκμηρίωση κώδικα C. Συνήθως, χρησιμοποιείται για την τεκμηρίωση του δημόσιου API βιβλιοθηκών όπως η GTK+ και η GNOME. Μπορεί όμως να χρησιμοποιηθεί και για την τεκμηρίωση κώδικα εφαρμογών.

### Πώς λειτουργεί το GTK-Doc;

Το GTK-Doc χρησιμοποιεί την τεκμηρίωση συναρτήσεων που έχει συμπεριληφθεί στα πηγαία αρχεία (εντός μπλοκ σχολίων με ειδική μορφή), ή την τεκμηρίωση που έχει προστεθεί στα πρότυπα αρχεία που χρησιμοποιεί το GTK-Doc (σημειώστε όμως ότι το GTK-Doc παράγει τεκμηρίωση μόνο για τις συναρτήσεις που δηλώνονται σε αρχεία κεφαλίδας· δεν παράγει τεκμηρίωση για στατικές συναρτήσεις).

Το GTK-Doc αποτελείται από μια σειρά από σενάρια perl , καθένα από τα οποία είναι υπεύθυνο για διαφορετικό στάδιο της όλης διαδικασίας.

Η διαδικασία περιλαμβάνει 5 κύρια στάδια:

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

2. Συλλέγοντας πληροφορίες σχετικά με τον κώδικα. Το gtkdoc-scan σαρώνει τα αρχεία κεφαλίδων του κώδικα ψάχνοντας για δηλώσεις συναρτήσεων, μακροεντολές, enums, δομές και ενώσεις. Δημιουργεί το αρχείο `<module>-decl-list.txt` που περιέχει μια λίστα με τις δηλώσεις, και τις τοποθετεί σε ενότητες αναλόγως με το αρχείο κεφαλίδας που βρίσκονται. Από την πρώτη εκτέλεση του προγράμματος το αρχείο αντιγράφεται στο `<module>-sections.txt`. Ο συγγραφέας μπορεί να τακτοποιήσει τις ενότητες και τη σειρά των δηλώσεων, για να παράξει το επιθυμητό τελικό αποτέλεσμα. Το δεύτερο αρχείο δημιουργεί το `<module>-decl.txt`. Το αρχείο αυτό περιέχει τις πλήρεις δηλώσεις που βρέθηκαν από τον σαρωτή.Αν για κάποιο λόγο θέλετε μερικά σύμβολα να εμφανίζονται στην τεκμηρίωση, όπου η πλήρης δήλωση δεν μπορεί να βρεθεί από τον σαρωτή ή πρέπει να εμφανίζεται διαφορετικά, κάποιος μπορεί να τοποθετήσει οντότητες όμοιες με αυτές `<module>-decl.txt` στο αρχείο `<module>-overrides.txt`.

   Το gtkdoc-scanobj μπορεί επίσης να χρησιμοποιηθεί για να κάνει δυναμική αναζήτηση σε μια βιβλιοθήκη για ενδεχόμενες υποκλάσεις GObject. Αποθηκεύει τις πληροφορίες για τη θέση κάθε αντικειμένου στην ιεραρχία κλάσεων καθώς και για τα ορίσματα και σήματα GObject που περιέχει.

   Το gtkdoc-scanobj δεν πρέπει να χρησιμοποιείτε πλέον. Χρειαζόταν στο παρελθόν όταν το GObject ήταν ακόμα GtkObject μέσα στη gtk+.

3. Δημιουργία "πρότυπων" αρχείων Το gtkdoc-mktmpl παράγει μια σειρά από αρχεία στον υποκατάλογο `tmpl/`, χρησιμοποιώντας τις πληροφορίες που συλλέχθηκαν κατά το πρώτο στάδιο. (Σημειώστε ότι μπορεί να εκτελεστεί περισσότερες από μία φορές. Προσπαθεί να διασφαλίσει ότι δεν χάνεται ποτέ και κανενός είδους τεκμηρίωση.)

   Από την έκδοση GTK-Doc 1.9 και μετά τα πρότυπα αρχεία δεν είναι πλέον απαραίτητα. Σας συνιστούμε να διατηρείτε την τεκμηρίωση στον κώδικα. Το gtkdocize υποστηρίζει πλέον την επιλογή `--flavour no-tmpl` η οποία επιλέγει ένα αρχείο makefile που δεν χρησιμοποιεί καθόλου πρότυπα tmpl. Αν δεν έχετε κάνει ποτέ αλλαγές με το χέρι σε αρχεία προτύπων tmpl, παρακαλώ αφαιρέστε τον κατάλογο (π.χ. από ένα σύστημα ελέγχου εκδόσεων).

4. Παραγωγή SGML/XML και HTML/PDF. Το gtkdoc-mkdb μετατρέπει τα αρχεία προτύπων tmpl σε αρχεία SGML ή XML και τα τοποθετεί στους υποκαταλόγους `sgml/` ή `xml/`. Αν ο πηγαίος κώδικας περιέχει τεκμηρίωση συναρτήσεων εντός ειδικών μπλοκ σχολίων, τα σχόλια συγχωνεύονται σε αυτό το στάδιο. Αν δεν υπάρχουν αρχεία προτύπων tmpl, τότε χρησιμοποιούνται μόνο τα έγγραφα που προέκυψαν από τον πηγαίο κώδικα και τα δεδομένα της ενδοσκόπησης. Σας συνιστούμε να χρησιμοποιήσετε το βιβλίο τεκμηρίωσης XML.

   Το gtkdoc-mkhtml μετατρέπει τα αρχεία SGML/XML σε αρχεία HTML που τοποθετούνται στον υποκατάλογο `html/`. Ομοίως το gtkdoc-mkpdf μετατρέπει τα αρχεία SGML/XML σε ένα αρχείο PDF που ονομάζεται `<package>.pdf`.

   Τα αρχεία στους καταλόγους `sgml/`, `xml/` και `html/` αντικαθίστανται αυτόματα. Επομένως, δεν πρέπει να τα αλλάζετε με το χέρι.

5. Διόρθωση παραπομπών μεταξύ εγγράφων Μετά την εγκατάσταση των αρχείων HTML, μπορείτε να εκτελέσετε το gtkdoc-fixxref για να διορθώσετε τυχόν παραπομπές σε διαφορετικά έγγραφα. Για παράδειγμα, η τεκμηρίωση του GTK+ περιέχει πολλές παραπομπές σε τύπους που επεξηγούνται στο εγχειρίδιο του GLib. Όταν ετοιμάζετε πακέτα κώδικα για διανομή, μπορείτε να χρησιμοποιείτε το gtkdoc-rebase για να μετατρέπετε όλους τους εξωτερικούς συνδέσμους σε διαδικτυακούς συνδέσμους. Κατά την εγκατάσταση της τεκμηρίωσης που περιλαμβάνεται στο διανεμηθέντα κώδικα (παράγεται αυτόματα), η ίδια εφαρμογή θα προσπαθήσει να μετατρέψει ξανά τους συνδέσμους σε τοπικούς συνδέσμους (προς τις τοποθεσίες όπου είναι εγκατεστημένη η τεκμηρίωση).

### Λήψη GTK-Doc

#### Απαιτήσεις

Perl v5 - τα βασικά σενάρια είναι γραμμένα σε Perl.

DocBook DTD v3.0 - Πρόκειται για την DocBook SGML DTD. http://www.ora.com/davenport

Jade v1.1 - Πρόκειται για επεξεργαστή DSSSL που μετατρέπει τη SGML σε διάφορες άλλες μορφές. http://www.jclark.com/jade

Modular DocBook Stylesheets Πρόκειται για τον κώδικα DSSSL που απαιτείται για τη μετατροπή από DocBook σε HTML (και ορισμένες άλλες μορφές). Χρησιμοποιείται σε συνδυασμό με το jade. Έχουν γίνει κάποιες μικρές προσαρμογές του κώδικα DSSSL, στο gtk-doc.dsl, για το χρωματισμό κώδικα/δηλώσεων και για την υποστήριξη των καθολικών ευρετηρίων παραπομπών στα παραγόμενα HTML. http://nwalsh.com/docbook/dsssl

docbook-to-man - Σε περίπτωση που θέλετε να δημιουργήσετε σελίδες man από το DocBook. Έχουν γίνει κάποιες μικρές προσαρμογές των 'προδιαγραφών μετάφρασης', για να εμφανίζονται με κεφαλαία οι τίτλοι ενοτήτων και να προστίθενται ο τίτλος 'Βιβλιοθήκη GTK' στην αρχή της σελίδας και η ημερομηνία αναθεώρησης στο τέλος της. Βλέπε http://www.ora.com/davenport ΣΗΜΕΙΩΣΗ: Αυτή η δυνατότητα δε λειτουργεί προς το παρόν.

#### Εγκατάσταση

Δεν υπάρχει σταθερή τοποθεσία για την εγκατάσταση των DocBook Modular Stylesheets.

Το σενάριο εντολών configure του GTK-Doc ψάχνει αυτόματα τους τρεις παρακάτω καταλόγους:

`/usr/lib/sgml/stylesheets/nwalsh-modular` (χρησιμοποιείται από το RedHat)

`/usr/lib/dsssl/stylesheets/docbook` (χρησιμοποιείται από το Debian)

`/usr/share/sgml/docbkdsl` (χρησιμοποιείται από το SuSE)

Αν τα φύλλα στυλ είναι εγκατεστημένα κάπου αλλού, θα πρέπει να ρυθμίσετε GTK-Doc με την επιλογή: `--with-dsssl-dir=< ΔΙΑΔΡΟΜΗ_ΠΡΟΣ_ΡΙΖΙΚΟ_ΚΑΤΑΛΟΓΟ_ΦΥΛΛΩΝ_ΣΤΥΛ>`

### Περί GTK-Doc

(ΠΡΟΣ ΔΙΟΡΘΩΣΗ)

(Ιστορικό, συγγραφείς, ιστοσελίδες, άδεια, μελλοντικά σχέδια, σύγκριση με άλλα παρόμοια συστήματα.)

### Περί του εγχειριδίου

(ΠΡΟΣ ΔΙΟΡΘΩΣΗ)

(σε ποιους απευθύνεται, πού θα το βρείτε, άδεια)

## Δημιουργώντας ένα έργο

Οι επόμενες ενότητες περιγράφουν τα βήματα που απαιτούνται για να ενσωματώσετε το GTK-Doc στο έργο σας. Υποθέστε ότι εργάζεστε στο έργο 'meep'. Το έργο περιέχει τη βιβλιοθήκη 'libmeep' και την εφαρμογή 'meeper' για τον τελικό χρήστη. Υποθέστε επίσης ότι θα χρησιμοποιήσουμε το autoconf και το automake. Επιπλέον η ενότητα αρχεία makefiles ή άλλα συστήματα ανάπτυξης περιγράφει τα βασικά που χρειάζονται για να δουλέψουμε σε διαφορετικό έργο.

### Δημιουργία του σκελετού τεκμηρίωσης

Εντός του ριζικού καταλόγου του έργου δημιουργήστε το φάκελο docs/reference (ώστε να μπορείτε να χρησιμοποιήσετε το όνομα docs/help για την τεκμηρίωση του τελικού χρήστη). Συνιστάται να δημιουργήσετε έναν ακόμη υποκατάλογο με το όνομα του πακέτου τεκμηρίωσης. Αυτό δε χρειάζεται για πακέτα που περιλαμβάνουν μόνο μία βιβλιοθήκη.

Αυτό θα φαίνεται όπως είναι παρακάτω:

Παράδειγμα δομής καταλόγου

    meep/
      docs/
        reference/
          libmeep/
          meeper/
      src/
        libmeep/
        meeper/

### Ενσωμάτωση στο autoconf

Πολύ εύκολα! Απλά προσθέτετε μία γραμμή στο σενάριο `configure.ac`.

Ενσωμάτωση στο autoconf

    # έλεγχος για gtk-doc
    GTK_DOC_CHECK([1.14],[--flavour no-tmpl])

Αυτό θα επαιτεί όλοι οι προγραμματιστές να έχουν εγκατεστημένο το gtk-doc. Αν είναι εντάξει για το έργο σας να έχετε επιπλέον κατασκευή ρυθμίσεων για το api-doc, μπορείτε να το επιλύσετε όπως αναφέρετε παρακάτω. Αφήστε το όπως έχει, όσο το gtkdocize ψάχνει στην αρχή της σειράς για το `GTK_DOC_CHECK`.

Προαιρετικά κρατήστε το gtk-doc

    # έλεγχος για gtk-doc
    m4_ifdef([GTK_DOC_CHECK], [
    GTK_DOC_CHECK([1.14],[--flavour no-tmpl])
    ],[
    AM_CONDITIONAL([ENABLE_GTK_DOC], false)
    ])

Το πρώτο όρισμα χρησιμοποιείται για έλεγχο του gtkdocversion κατά τη ρύθμιση. Το δεύτερο, προαιρετικό όρισμα χρησιμοποιείται από το gtkdocize. Η μακροεντολή GTK_DOC_CHECK επίσης προσθέτει αρκετούς διακόπτες ρύθμισης:

1. --with-html-dir=ΔΙΑΔΡΟΜΗ : διαδρομή προς την εγκατεστημένη τεκμηρίωση

2. --enable-gtk-doc : χρήση gtk-doc για την τεκμηρίωσης [default=no]

3. --enable-gtk-doc-html : παραγωγή τεκμηρίωσης σε μορφή html [default=yes]

4. --enable-gtk-doc-pdf : παραγωγή τεκμηρίωσης σε μορφή pdf [default=no]

Η προεπιλογή είναι να είναι απενεργοποιημένο το GTK-Doc! Θυμηθείτε να χρησιμοποιήσετε την επιλογή `'--enable-gtk-doc'` στην επόμενη εκτέλεση του `configure`. Διαφορετικά εγκαθίσταται η προπαραχθείσα τεκμηρίωση (δυνατότητα χρήσιμη για το χρήστη, αλλά όχι για τον προγραμματιστή).

Επίσης, συνιστάται να προσθέσετε την ακόλουθη γραμμή στο σενάριο `configure.ac`. Επιτρέπει στο `gtkdocize` να αντιγράφει αυτόματα τον ορισμό της μακροεντολής `GTK_DOC_CHECK` στο έργο σας.

Προετοιμασία για το gtkdocize

    AC_CONFIG_MACRO_DIR(m4)

### Ενσωμάτωση στο automake

Πρώτα αντιγράψτε το `Makefile.am` από τον υποκατάλογο με τα παραδείγματα των gtkdoc-sources στον κατάλογο της τεκμηρίωσης API του έργου σας ( `./docs/reference/<package>`). Αν έχετε περισσότερα από ένα πακέτα τεκμηρίωσης, επαναλάβετε τη διαδικασία για καθένα από αυτά.

Το επόμενο βήμα είναι να τροποποιήσετε τις ρυθμίσεις στο `Makefile.am`. Πριν από κάθε ρύθμιση υπάρχει ένα σχόλιο που εξηγεί τη χρησιμότητά της. Οι περισσότερες είναι σημαίες που στέλνονται στα αντίστοιχα εργαλεία. Κάθε εργαλείο διαθέτει μια μεταβλητή της μορφής `<ΟΝΟΜΑ_ΕΡΓΑΛΕΙΟΥ>_ΕΠΙΛΟΓΕΣ`. όλα τα εργαλεία υποστηρίζουν την επιλογή `--help` για την παραγωγή λίστας με τις υποστηριζόμενες παραμέτρους.

Μπορείτε, επίσης, να ενεργοποιήσετε το GTK-Doc για το distcheckmake target. Απλά προσθέστε τη γραμμή του επόμενου παραδείγματος στο ριζικό `Makefile.am`:

Ενεργοποίηση του GTK-Doc κατά το make distcheck

    DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc

### Ενσωμάτωση στο autogen

Τα περισσότερα έργα διαθέτουν ένα σενάριο `autogen.sh` για τη δημιουργία υποδομών μετά από το checkout από ένα το σύστημα ελέγχου εκδόσεων (π.χ., cvs/svn/git). Το GTK-Doc διαθέτει το εργαλείο `gtkdocize`, το οποίο μπορεί να χρησιμοποιηθεί για ένα τέτοιο σενάριο. Θα πρέπει να εκτελείται πριν το autoheader, το automake ή το autoconf.

Εκτέλεση του gtkdocize από το autogen.sh

    gtkdocize || exit 1

Κατά την εκτέλεσή του, το `gtkdocize` αντιγράφει το `gtk-doc.make` στο ριζικό κατάλογο του έργου σας (ή στον κατάλογο που ορίζει η επιλογή `--docdir`). Επίσης, ελέγχει το σενάριο configure για να βρει την κλήση στο `GTK_DOC_CHECK`.

Αρχικά, το GTK-Doc δημιουργούσε αρχεία προτύπων εκεί που οι προγραμματιστές εισήγαγαν την τεκμηρίωση. Δυστυχώς, αυτή η προσέγγιση δεν ήταν ιδιαίτερα επιτυχής (π.χ η ανάγκη για την παραγωγή αρχείων στο σύστημα ελέγχου εκδόσεων). Από την έκδοση 1.9 και μετά, τα πρότυπα αρχεία δεν είναι πλέον απαραίτητα. Σας συνιστούμε να διατηρείτε την τεκμηρίωση στον κώδικα. To gtkdocize υποστηρίζει πλέον την επιλογή `--flavour no-tmpl` που επιλέγει ένα αρχείο makefile που δεν χρησιμοποιεί καθόλου πρότυπα tmpl. Πέρα από την άμεση προσθήκη της επιλογής στην κλήση της εντολής, μπορεί να προστεθεί και σε μια μεταβλητή περιβάλλοντος που ονομάζεται GTKDOCIZE_FLAGS ή να οριστεί ως δεύτερη παράμετρος στη μακροεντολή GTK_DOC_CHECK στο σενάριο configure. Αν δεν έχετε κάνει ποτέ αλλαγές με το χέρι σε αρχεία προτύπων και μεταβαίνετε από μια παλιότερη έκδοση του gtkdoc, παρακαλώ αφαιρέστε τον κατάλογο (π.χ. από το σύστημα ελέγχου εκδόσεων).

### Παραγωγή της τεκμηρίωσης

Αφού ολοκληρωθούν τα προηγούμενα βήματα, προχωρήστε στην παραγωγή. Πρώτα, θα πρέπει να εκτελεστεί εκ νέου το `autogen.sh`. Αν το σενάριο εκτελεί και το configure, προσθέστε την επιλογή `--enable-gtk-doc`. Διαφορετικά, εκτελέστε εσείς το`configure` με αυτή την επιλογή.

Η πρώτη εκτέλεση του make δημιουργεί μια σειρά από πρόσθετα αρχεία στους καταλόγους της τεκμηρίωσης. Τα σημαντικά είναι τα: `<package>.types`, `<package>-docs.xml` (στο παρελθόν .sgml), `<package>-sections.txt`.

Παραγωγή της τεκμηρίωσης

    ./autogen.sh --enable-gtk-doc
    make

Τώρα, μπορείτε να εμφανίσετε το `docs/reference/<package>/index.html` στον περιηγητή σας. Είναι αλήθεια ότι προς το παρόν το αποτέλεσμα είναι μάλλον απογοητευτικό. Μην ανησυχείτε όμως. Στο επόμενο κεφάλαιο θα μάθετε πώς μπορείτε να ζωντανέψετε τις σελίδες σας.

### Ενσωμάτωση σε συστήματα ελέγχου εκδόσεων

Ο εμπειρικός κανόνας είναι ότι αυτά τα αρχεία που επεξεργαστήκατε πρέπει να περάσουν από τον έλεγχο έκδοσης. Για τυπικά έργα, πρόκειται για τα αρχεία: `<package>.types`, `<package>-docs..xml` (στο παρελθόν .sgml), `<package>-sections.txt`, `Makefile.am`

### Ενσωμάτωση στα αρχεία makefiles ή άλλα συστήματα ανάπτυξης

Στην περίπτωση που κάποιος δεν θέλει να χρησιμοποιήσει το automake και επομένως το `gtk-doc.mak` θα χρειαστεί να καλέσει τα εργαλεία του gtkdoc στη σωστή σειρά στα makefiles (ή άλλα εργαλεία ανάπτυξης).

Βήματα παραγωγής τεκμηρίωσης

    DOC_MODULE=meep
    // sources have changed
    gtkdoc-scan --module=$(DOC_MODULE) --source-dir=...
    gtkdoc-scangobj --module=$(DOC_MODULE)
    gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml
    // xml files have changed
    mkdir html
    cd html && gtkdoc-mkhtml $(DOC_MODULE) ../meep-docs.xml
    gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html

Πρέπει να κοιτάξετε στα αρχεία `Makefile.am` και `gtk-doc.mak` για να επιλέξετε τις ρυθμίσεις που χρειάζονται.

## Τεκμηρίωση κώδικα

Το GTK-Doc χρησιμοποιεί σχόλια με ειδική σύνταξη για την προσθήκη τεκμηρίωσης στον κώδικα. Παράλληλα, ανακαλεί πληροφορίες για τη δομή του έργου σας από άλλες πηγές. Στην επόμενη ενότητα περιέχονται όλες οι λεπτομέρειες για τη σύνταξη αυτών των σχολίων.

Τοποθέτηση τεκμηρίωσης

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

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

Ο σαρωτής μπορεί να χειριστεί άνετα την πλειοψηφία των κεφαλίδων C . Σε περίπτωση που παίρνετε προειδοποιήσεις από τον σαρωτή οι οποίες μοιάζουν με έναν ειδικό χαρακτήρα, μπορείτε να υποδείξετε στο GTK-Doc να τους παραλείψει.

Μπλοκ σχολίου GTK-Doc

    #ifndef __GTK_DOC_IGNORE__
    /* unparseable code here */
    #endif

### Σχόλια τεκμηρίωσης

Ένα σχόλιο πολλαπλών γραμμών που διαθέτει ένα επιπλέον «*» στην αρχή αποτελεί ένα μπλοκ τεκμηρίωσης που λαμβάνεται υπόψη από τα εργαλεία του GTK-Doc.

Μπλοκ σχολίου GTK-Doc

    /**
     * identifier:
     * documentation ...
     */

Το 'αναγνωριστικό' είναι μία γραμμή που περιέχει το όνομα του στοιχείου στο οποίο αναφέρεται το σχόλιο. Η σύνταξή του εξαρτάται από τον τύπο του στοιχείου. (ΜΕΛΛΟΝΤΙΚΑ: να προστεθεί πίνακας με τα αναγνωριστικά)

Η ομάδα 'τεκμηρίωσης' επίσης διαφέρει ανάλογα με τον τύπο συμβόλου. Για τους τύπους συμβόλων που δέχονται παραμέτρους όπως συναρτήσεις ή μακροεντολές προηγείται η περιγραφή των παραμέτρων και ακολουθεί μια κενή γραμμή (μόνο '*'). Ακολουθεί η λεπτομερής περιγραφή. Όλες οι γραμμές (εκτός από τις λίστες προγράμματος και τις ενότητες CDATA) που περιέχουν μόνο ένα ' *' (διάστημα-αστερίσκο) μετατρέπονται σε αλλαγές παραγράφου. Αν δεν επιθυμείτε αλλαγή παραγράφου, αλλάξτε το σε ' * ' (διάστημα-αστερίσκος-διάστημα-διάστημα). Αυτό είναι χρήσιμο σε προδιαμορφωμένο κείμενο (λίστες κώδικα).

Όταν τεκμηριώνετε κώδικα, περιγράψτε δύο πλευρές:

- Τι είναι: Το όνομα της κλάσης ή της συνάρτησης μπορεί μερικές φορές να είναι παραπλανητικό για ανθρώπους που δεν έχουν τεχνογνωσία στο θέμα.

- Τι κάνει: Αναφέρει τις κοινές χρήσεις και τις βάζει σε σχέση με άλλο API.

Ένα πλεονέκτημα της χρήσης υπερκειμένου αντί για απλό κείμενο είναι η δυνατότητα προσθήκης συνδέσμων στο έγγραφο. Ωστόσο, η χρήση της σωστής σύνταξης για τη δημιουργία συνδέσμων μπορεί να είναι αρκετά κουραστική διαδικασία. Το GTK-Doc σας βοηθάει, παρέχοντάς σας μια σειρά από χρήσιμες συντμήσεις.

- Χρησιμοποιήστε τη γραφή function() για αναφορές σε συναρτήσεις ή μακροεντολές που δέχονται ορίσματα.

- Χρησιμοποιήστε τη γραφή @param για να αναφερθείτε σε παραμέτρους. Επίσης, χρησιμοποιήστε αυτή τη γραφή για να αναφερθείτε σε παραμέτρους άλλων συναρτήσεων, σχετικών με την περιγραφόμενη.

- Χρησιμοποιήστε τη γραφή %constant για να αναφερθείτε σε σταθερές, π.χ. %G_TRAVERSE_LEAFS.

- Χρησιμοποιήστε τη γραφή #symbol για να αναφερθείτε σε άλλους τύπους συμβόλων, π.χ. δομές, αριθμήσεις και μακροεντολές που δε δέχονται ορίσματα.

- Χρησιμοποιήστε τη γραφή #Object::signal για να αναφερθείτε σε ένα σήμα GObject.

- Χρησιμοποιήστε τη γραφή #Object::property για να αναφερθείτε σε μία ιδιότητα GObject.

- Χρησιμοποιήστε τη γραφή #Struct.field για να αναφερθείτε σε ένα πεδίο μιας δομής.

Αν θέλετε να χρησιμοποιήσετε τους ειδικούς χαρακτήρες «<», «>», «()», «@», «%» ή «#» στην τεκμηρίωση, χωρίς να φοβάστε ότι θα τους αλλάξει το GTK-Doc, μπορείτε να χρησιμοποιήσετε τις οντότητες XML «&lt;», «&gt;», «&lpar;», «&rpar;», «&commat;», «&percnt;» και «&num;», αντίστοιχα, ή να χρησιμοποιήσετε την ανάποδη κάθετο «\» ως χαρακτήρα διαφυγής.

Το DocBook σας προσφέρει και άλλες δυνατότητες πέρα από τους συνδέσμους. Μπορεί να περιλαμβάνει λίστες, πίνακες και παραδείγματα. Για να επιτρέπεται η χρήση ετικετών SGML/XML στα σχόλια τεκμηρίωσης, θα πρέπει να έχει προστεθεί η επιλογή `--xml-mode` ή `--sgml-mode` στη μεταβλητή MKDB_OPTIONS του `Makefile.am`.

Από το GTK-Doc-1.18 το εργαλείο υποστηρίζει υποσύνολα ή γλώσσα markdown. Κάποιος μπορεί να τα χρησιμοποιήσει για υπό-κεφαλίδες και για απλές κατηγοριοποιημένες λίστες. Στις παλαιότερες εκδόσεις του GTK-Doc το περιεχόμενο θα πρέπει να καταστεί ως έχει (τα στοιχεία της λίστας θα εμφανιστούν σε μία γραμμή χωρισμένες με παύλες).

Μπλοκ σχολίου GTK-Doc χρησιμοποιώντας markdown

    /**
     * identifier:
     *
     * documentation ...
     *
     * # Sub heading #
     *
     * more documentation:
     * - list item 1
     * - list item 2
     *
     * Even more docs.
     */

Όπως αναφέρθηκε και προηγουμένως το GTK-Doc αναλαμβάνει την τεκμηρίωση του δημόσιου API. Άρα, δεν μπορεί να γραφτεί τεκμηρίωση για στατικά σύμβολα. Παρόλα αυτά, συνιστάται ο σχολιασμός και αυτών των συμβόλων, γιατί βοηθά στην κατανόηση του κώδικα. Σας προτείνουμε λοιπόν να τα σχολιάζετε χρησιμοποιώντας κανονικά σχόλια (χωρίς το δεύτερο «*» στην πρώτη γραμμή). Αν αργότερα χρειαστεί να μετατραπεί η συνάρτηση σε δημόσια, το μόνο που θα πρέπει να γίνει είναι να προστεθεί άλλο ένα «*» στο μπλοκ του σχολίου, και να εισαχθεί το όνομα του συμβόλου στην κατάλληλη θέση του αρχείου ενοτήτων.

### Τεκμηρίωση ενοτήτων

Κάθε ενότητα της τεκμηρίωσης περιέχει πληροφορίες για μία κλάση ή ένα άρθρωμα. Για να εισάγετε το συστατικό μπορείτε να γράψετε ένα μπλοκ σχολίου ενότητας. Η σύντομη αυτή περιγραφή χρησιμοποιείται και για τον πίνακα περιεχομένων. Όλα τα πεδία @fields είναι προαιρετικά.

Μπλοκ σχολίου ενότητας

    /**
     * SECTION:meepapp
     * @short_description: the application class
     * @title: Meep application
     * @section_id:
     * @see_also: #MeepSettings
     * @stability: Stable
     * @include: meep/app.h
     * @image: application.png
     *
     * The application class handles ...
     */

SECTION:<name>

  Το name συνδέει την τεκμηρίωση της ενότητας με το αντίστοιχο μέρος στο αρχείο `<package>-sections.txt`. Το όνομα που δίνεται εδώ πρέπει να ταιριάζει με την ετικέτα <FILE> στο αρχείο `<package>-sections.txt`.

@short_description

  Περιγραφή της ενότητας σε μία γραμμή, η οποία θα εμφανίζεται, στη συνέχεια, μετά από τους συνδέσμους του πίνακα περιεχομένων και στην αρχή της σελίδας της ενότητας.

@title

  Ο τίτλος της ενότητας από προεπιλογή έχει όνομα <name> από τη δήλωση SECTION. Μπορεί να παρακαμφθεί με το πεδίο @title.

@section_id

  Παρακάμπτει τη χρήση του τίτλου ως αναγνωριστικό της ενότητας. Για αντικείμενα GOBject το <title> χρησιμοποιείται ως section_id και για άλλες ενότητες είναι <MODULE>-<title>.

@see_also

  Λίστα συμβόλων σχετικών με αυτή την ενότητα.

@stability

  Άτυπη περιγραφή του επιπέδου σταθερότητας του συγκεκριμένου API. Σας συνιστούμε τη χρήση ενός από τους ακόλουθους όρους:

  - Σταθερή - Μια σταθερή διεπαφή επιτρέπει σε τρίτους να αναπτύσσουν εφαρμογές για τις διεπαφές αυτές, να τις δημοσιεύουν και να είναι βέβαιοι ότι οι εφαρμογές θα τρέχουν σε όλες τις ελάσσονες εκδόσεις του προϊόντος (οι οποίες θα είναι μεταγενέστερες της διεπαφής και θα ανήκουν στην ίδια μείζονα έκδοση). Ακόμη και όταν πρόκειται για μείζονες νέες εκδόσεις, οι ασυμβατότητες αναμένεται να είναι σπάνιες και να οφείλονται σε σοβαρούς λόγους.

  - Ασταθής - Ασταθείς είναι οι πειραματικές ή μεταβατικές διεπαφές. Συνήθως χρησιμοποιούνται για να παρέχουν σε τρίτους πρώιμη πρόσβαση σε νέες ή διαρκώς εξελισσόμενες τεχνολογίες, ή ως ενδιάμεσες λύσεις για προβλήματα για τα οποία αναμένεται μια γενικότερη λύση. Δεν υφίσταται καμία εγγύηση συμβατότητας μεταξύ μιας ελάσσονας έκδοσης και της επόμενης.

  - Ιδιωτική - Διεπαφή που μπορεί να χρησιμοποιηθεί εντός της στοίβας του GNOME, αλλά δε διαθέτει τεκμηρίωση που να απευθύνεται στους τελικούς χρήστες. Τέτοιου είδους συναρτήσεις μπορούν να χρησιμοποιούνται μόνο στο πλαίσιο σαφώς καθορισμένων και τεκμηριωμένων διαδικασιών.

  - Εσωτερική - Μια διεπαφή που είναι εσωτερική σε ένα module δεν απαιτεί την ύπαρξη τεκμηρίωσης για τον τελικό χρήστη. Οι συναρτήσεις που δεν περιέχουν τεκμηρίωση θεωρείται ότι είναι εσωτερικές.

@include

  Αρχεία `#include` που εμφανίζονται στη συνοπτική παρουσίαση των ενοτήτων (λίστα αρχείων που χωρίζονται με κόμματα), αντικαθιστώντας την καθολική τιμή στο αρχείο ενότητας ή στη γραμμή εντολών. Πρόκειται για προαιρετικό στοιχείο.

@image

  Η εικόνα που θα εμφανίζεται στο πάνω μέρος της σελίδας αναφοράς για αυτή την ενότητα. Αυτή συχνά θα είναι κάποιου είδους διάγραμμα για την απεικόνιση μια κλάσης ή ενός διαγράμματος της σχέσης της με άλλες κλάσεις. Αυτή η καταχώρηση είναι προαιρετική.

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

### Τεκμηρίωση συμβόλων

Κάθε σύμβολο (συνάρτηση, μακροεντολή, δομή, αρίθμηση, σήμα, ιδιότητα) τεκμηριώνεται σε ξεχωριστό μπλοκ. Η καταλληλότερη θέση για τα μπλοκ είναι δίπλα στους ορισμούς των συμβόλων, γιατί διευκολύνει το έργο συγχρονισμού. Επομένως, η τεκμηρίωση των συναρτήσεων συνήθως βρίσκεται στο αρχείο του πηγαίου κώδικα, ενώ των μακροεντολών, δομών και αριθμήσεων στο αρχείο κεφαλίδας.

#### Γενικές ετικέτες

Μπορείτε να προσθέσετε πληροφορίες εκδόσεων σε όλα τα στοιχεία της τεκμηρίωσης για να πείτε πότε εισήχθηκε ένα API, ή πότε καταργήθηκε.

Ετικέτες εκδόσεων

Since:

  Περιγραφή για ποια έκδοση του κώδικα είναι διαθέσιμο το API.

Deprecated:

  Παράγραφος που ενημερώνει ότι θα πρέπει να σταματήσει η χρήση της συνάρτησης. Η περιγραφή θα πρέπει να παραπέμπει τον αναγνώστη στο νέο API.

(FIXME : Πληροφορίες σταθερότητας)

Γενικές ετικέτες

    /**
     * foo_get_bar:
     * @foo: some foo
     *
     * Ανάκτηση του @foo's bar.
     *
     * Επιστρέφει: @foo's bar
     *
     * Από το: 2.6
     * Παρωχημένο: 2.12: Χρησιμοποιείστε το foo_baz_get_bar() στη θέση του.
     */
    Bar *
    foo_get_bar(Foo *foo)
    {
    ...

#### Μπλοκ σχολίου συνάρτησης

Παρακαλούμε να θυμηθείτε να:

- Τεκμηριώσετε κατά πόσο τα επιστρεφόμενα αντικείμενα, λίστες, συμβολοσειρές, κ.λπ, θα πρέπει να ελευθερώνονται, να μην ελευθερώνονται ή να απορρίπτονται.

- Τεκμηριώσετε κατά πόσο οι παράμετροι μπορούν να είναι μηδενικές (NULL) και τι συμβαίνει αν είναι.

- Αναφέρετε ενδιαφέρουσες προ-υποθέσεις και μετα-υποθέσεις όπου χρειάζεται.

Το Gtk-doc θεωρεί ότι όλα τα σύμβολα (μακροεντολές, συναρτήσεις, κτλ.) που ξεκινούν με '_' είναι ιδιωτικά και τα μεταχειρίζεται σαν στατικές συναρτήσεις.

Επίσης, ρίξτε μια ματιά στις ετικέτες σημείωσης ενδοσκόπησης: http://live.gnome.org/GObjectIntrospection/Annotations

Μπλοκ σχολίου συνάρτησης

    /**
     * function_name:
     * @par1:  description of parameter 1. These can extend over more than
     * one line.
     * @par2:  description of parameter 2
     * @...: a %NULL-terminated list of bars
     *
     * The function description goes here. You can use @par1 to refer to parameters
     * so that they are highlighted in the output. You can also use %constant
     * for constants, function_name2() for functions and #GtkWidget for links to
     * other declarations (which may be documented elsewhere).
     *
     * Returns: an integer.
     *
     * Since: 2.2
     * Deprecated: 2.18: Use other_function() instead.
     */

Ετικέτες συναρτήσεων

Returns:

  Παράγραφος που περιγράφει το επιστρεφόμενο αποτέλεσμα.

@...:

  Σε περίπτωση που η μεταβλητή μπορεί να δεκτεί μεταβλητό αριθμό ορισμάτων (variadic), πρέπει να χρησιμοποιήσετε αυτή την ετικέτα (η ετικέτα @Varargs: λειτουργεί επίσης, για ιστορικούς λόγους).

#### Μπλοκ σχολίου ιδιότητας

Μπλοκ σχολίου ιδιότητας

    /**
     * SomeWidget:some-property:
     *
     * Here you can document a property.
     */
    g_object_class_install_property (object_class, PROP_SOME_PROPERTY, ...);

#### Μπλοκ σχολίου σήματος

Παρακαλούμε να θυμηθείτε να:

- Τεκμηριώστε πότε εκπέμπεται το σήμα και αν εκπέμπεται πριν ή μετά από άλλα σήματα.

- Τεκμηριώστε τι μπορεί να κάνει μια εφαρμογή στον διαχειριστή σημάτων.

Μπλοκ σχολίου σήματος

    /**
     * FooWidget::foobarized:
     * @widget: the widget that received the signal
     * @foo: some foo
     * @bar: some bar
     *
     * The ::foobarized signal is emitted each time someone tries to foobarize @widget.
     */
    foo_signals[FOOBARIZE] =
      g_signal_new ("foobarize",
                    ...

#### Μπλοκ σχολίου δομής

Μπλοκ σχολίου δομής

    /**
     * FooWidget:
     * @bar: some #gboolean
     *
     * This is the best widget, ever.
     */
    typedef struct _FooWidget {
      /*< private >*/
      GtkWidget parent;

      /*< public >*/
      gboolean bar;
    } FooWidget;

Χρησιμοποιήστε το `/*< private >*/` πριν από πεδία ιδιωτικών δομών που θέλετε να αποκρύψετε. Χρησιμοποιήστε το `/*< public >*/`για την αντίστροφη συμπεριφορά.

Οι ομάδες σχολίων μιας Δομής μπορούν επίσης να χρησιμοποιηθούν για GObjects και για GObjectClasses. Είναι συνήθως καλή ιδέα να προσθέτετε μία ομάδα σχολίου για μια κλάση, εάν έχει vmethods (γιατί έτσι μπορούν να τεκμηριωθούν). Για το ίδιο το GObject μπορείτε να χρησιμοποιήσετε τα σχετικά έγγραφα τμημάτων, έχοντας μία ξεχωριστή ομάδα για το στιγμιότυπο δομής θα ήταν χρήσιμο εάν το στιγμιότυπο έχει δημόσια πεδία. Ένα μειονέκτημα εδώ είναι ότι θα δημιουργηθούν δύο καταχωρήσεις δεικτών για το ίδιο όνομα (για την δομή και για το τμήμα).

#### Μπλοκ σχολίου Enum

Μπλοκ σχολίου Enum

    /**
     * Something:
     * @SOMETHING_FOO: something foo
     * @SOMETHING_BAR: something bar
     *
     * Τιμές απαρίθμησης χρησιμοποιούνται για το πράγμα, για τον ορισμό του πράγματος.
     */
    typedef enum {
      SOMETHING_FOO,
      SOMETHING_BAR,
      /*< private >*/
      SOMETHING_COUNT
    } Something·

Χρησιμοποιήστε το `/*< private >*/` πριν από ιδιωτικές τιμές enum που θέλετε να αποκρύψετε. Χρησιμοποιήστε το `/*< public >*/` για την αντίστροφη συμπεριφορά.

### Χρήσιμες ετικέτες DocBook

Ακολουθούν ορισμένες ετικέτες DocBook, ιδιαίτερα χρήσιμες για την τεκμηρίωση του κώδικα.

Για να συνδέσετε με μια άλλη ενότητα στην τεκμηρίωση GTK:

    <link linkend="glib-Hash-Tables">Hash Tables</link>

Ο προορισμός είναι το id του SGML/XML στο πρώτο στοιχείο της σελίδας στην οποία παραπέμπει ο σύνδεσμος. Για τις περισσότερες σελίδες είναι το ("gtk", "gdk", glib"), ακολουθούμενο από τον τίτλο της σελίδας («Πίνακες Hash»). Για τα γραφικά συστατικά είναι το όνομα της κλάσης. Τα διαστήματα και τα «_» μετατρέπονται σε «-» για να υπάρχει συμμόρφωση με το SGML/XML.

Αναφορά σε εξωτερική συνάρτηση, π.χ. τυποποιημένη συνάρτηση C:

    <function>...</function>

Συμπερίληψη παραδειγμάτων κώδικα:

    <example>
      <title>Using a GHashTable.</title>
      <programlisting>
          ...
      </programlisting>
    </example>

ή, ενδεχομένως, για πολύ σύντομο κώδικα που δεν χρειάζεται τίτλο:

    <informalexample>
      <programlisting>
      ...
      </programlisting>
    </informalexample>

. Στην τελευταία περίπτωση το GTK-Doc υποστηρίζει επίσης τη σύντμηση: |[ ... ]|

Συμπερίληψη λιστών με κουκίδες:

    <itemizedlist>
      <listitem>
        <para>
          ...
        </para>
      </listitem>
      <listitem>
        <para>
          ...
        </para>
      </listitem>
    </itemizedlist>

Συμπερίληψη σημειώσεων που ξεχωρίζουν από το υπόλοιπο κείμενο:

    <note>
      <para>
        Make sure you free the data after use.
      </para>
    </note>

Αναφορά σε τύπο:

    <type>unsigned char</type>

Αναφορά σε εξωτερική δομή (που δεν περιγράφεται στην τεκμηρίωση GTK):

    <structname>XFontStruct</structname>

Αναφορά σε πεδίο μιας δομής:

    <structfield>len</structfield>

Αναφορά σε όνομα κλάσης. Μία δυνατότητα είναι το :

    <classname>GtkWidget</classname>

, αλλά μάλλον θα χρησιμοποιήσετε το #GtkWidget (για αυτόματη δημιουργία συνδέσμου προς τη σελίδα GtkWidget, δείτε τις συντμήσεις).

Χρήση έντονων χαρακτήρων:

    <emphasis>This is important</emphasis>

Ονόματα αρχείων:

    <filename>/home/user/documents</filename>

Για να αναφερθείτε σε κλειδιά χρησιμοποιήστε:

    <keycombo><keycap>Control</keycap><keycap>L</keycap></keycombo>

## Συμπλήρωση επιπλέον αρχείων

Υπάρχουν ορισμένα επιπλέον αρχεία που πρέπει να ενημερώνονται παράλληλα με τα σχόλια εντός του πηγαίου κώδικα: `<package>.types`, `<package>-docs.xml` (στο παρελθόν .sgml), `<package>-sections.txt`.

### Επεξεργασία του αρχείου types

Αν η βιβλιοθήκη ή η εφαρμογή σας περιέχει GObjects, θα θέλετε να εμφανίζονται στην τεκμηρίωση τα σήματα, τα ορίσματα/παράμετροι καθώς και η θέση τους στην ιεραρχία. Για να το πετύχετε, απλά καταγράψτε τις συναρτήσεις `xxx_get_type` μαζί με την συμπερίληψή τους στο αρχείο `<package>.types`.

Υπόδειγμα αποσπάσματος αρχείου types

    #include <gtk/gtk.h>

    gtk_accel_label_get_type
    gtk_adjustment_get_type
    gtk_alignment_get_type
    gtk_arrow_get_type

Από την έκδοση 1.8 και μετά το gtkdoc-scan μπορεί να παράγει αυτόματα αυτή τη λίστα. Απλά προσθέστε την επιλογή «--rebuild-types» στο SCAN_OPTIONS του `Makefile.am`. Αν προτιμήσετε αυτή την προσέγγιση, θα πρέπει να μη συμπεριλάβετε το αρχείο types ούτε στη διανομή ούτε στον έλεγχο εκδόσεων.

### Επεξεργασία κύριου εγγράφου (master)

Το GTK-Doc παράγει τεκμηρίωση σε μορφή SGML/XML DocBook. Κατά την επεξεργασία των σχολίων εντός του πηγαίου κώδικα, τα εργαλεία του GTK-Doc παράγουν μία σελίδα τεκμηρίωσης ανά κλάση ή άρθρωμα, η οποία αποθηκεύεται ως ξεχωριστό αρχείο. Το κύριο έγγραφο συμπεριλαμβάνει αυτά τα αρχεία και τα ταξινομεί.

Αν και το GTK-Doc παράγει αυτόματα ένα πρότυπο κύριο έγγραφο, δεν το τροποποιεί κατά τις επόμενες εκτελέσεις. Αυτό σημαίνει ότι έχετε τη δυνατότητα να αλλάξετε τη δομή της τεκμηρίωσης. Μπορείτε να ομαδοποιήσετε κάποιες σελίδες ή να προσθέσετε νέες. Το GTK-Doc διαθέτει πλέον μια σουίτα για δοκιμές, στην οποία το κύριο έγγραφο παράγεται εκ νέου. Συνιστάται να επαναλαμβάνετε τακτικά αυτή τη διαδικασία, για να διαπιστώνετε αν έχουν προστεθεί νέα στοιχεία.

Μη δημιουργείτε νέα έγγραφα για τους οδηγούς εκμάθησης (tutorials). Απλά προσθέστε τους ως επιπλέον κεφάλαια, δηλαδή ενσωματώστε απευθείας τον οδηγό εκμάθησης για μια βιβλιοθήκη στην τεκμηρίωση API. Το πλεονέκτημα είναι ότι έτσι διευκολύνεται η διαδικασία δημιουργίας συνδέσμων από τον οδηγό εκμάθησης προς την τεκμηρίωση των συμβόλων. Επίσης, έτσι καθίσταται πιθανότερη η ενημέρωση του οδηγού μαζί με τη βιβλιοθήκη.

Ποιες είναι λοιπόν οι αλλαγές που πρέπει να γίνουν στο κύριο έγγραφο; Διευκρινίζουμε ότι πρόκειται για λίγες μόνο αλλαγές σε ορισμένα placeholders (κείμενα εντός αγκυλών).

Κεφαλίδα κύριου εγγράφου

    <bookinfo>
      <title>MODULENAME Reference Manual</title>
      <releaseinfo>
        for MODULENAME [VERSION]
        The latest version of this documentation can be found on-line at
        <ulink role="online-location" url="http://[SERVER]/MODULENAME/index.html">http://[SERVER]/MODULENAME/</ulink>.
      </releaseinfo>
    </bookinfo>

    <chapter>
      <title>[Insert title here]</title>

### Επεξεργασία αρχείου ενοτήτων

Το αρχείο ενοτήτων χρησιμεύει στην οργάνωση της τεκμηρίωσης που παράγεται από το GTK-Doc. Εδώ διευκρινίζεται σε ποιο άρθρωμα ή κλάση ανήκει κάθε σύμβολο και αποφασίζεται η ορατότητά του (αν θα είναι δημόσιο ή ιδιωτικό).

Το αρχείο ενοτήτων είναι ένα αρχείο απλού κειμένου με σύνταξη παρόμοια με XML (χρησιμοποιώντας ετικέτες). Οι κενές γραμμές αγνοούνται, ενώ οι γραμμές που ξεκινούν με '#' αντιμετωπίζονται ως γραμμές σχολίων.

Η ετικέτα <FILE> ... </FILE> χρησιμοποιείται για να δηλώσει το όνομα του αρχείου χωρίς οποιοδήποτε επίθεμα. Για παράδειγμα, το '<FILE>gnome-config</FILE>' σημαίνει ότι οι δηλώσεις των ενοτήτων θα βρίσκονται στο πρότυπο αρχείο `tmpl/gnome-config.sgml`, το οποίο θα μετατραπεί στο αρχείο DocBook SGML/XML `sgml/gnome-config.sgml` ή DocBook XML `xml/gnome-config.xml`. (Το όνομα του αρχείου HTML βασίζεται στο όνομα του αρθρώματος και τον τίτλο της ενότητας, ή για τα GObjects βασίζεται στο όνομα κλάσης GObjects που μετατράπηκε σε πεζά γράμματα).

Η ετικέτα <TITLE> ... </TITLE> χρησιμοποιείται για να ορίσει τους τίτλους των ενοτήτων. Χρησιμεύει μόνο πριν τη δημιουργία των προτύπων, καθώς ο τίτλος που περιέχεται στα αρχεία προτύπων αντικαθιστά αυτούς τους τίτλους. Επίσης, αν χρησιμοποιείται το σχόλιο SECTION στον πηγαίο κώδικα, αυτό είναι πεπαλαιωμένο.

Μπορείτε να ομαδοποιήσετε στοιχεία στην ενότητα χρησιμοποιώντας την ετικέτα <SUBSECTION>. Με την τωρινή της μορφή, εμφανίζει μία κενή γραμμή μεταξύ υποενοτήτων στη συνοπτική παρουσίαση. Μπορείτε επίσης να χρησιμοποιήσετε την <SUBSECTION Standard> για κλασικές δηλώσεις GObject (π.χ. συναρτήσεις όπως η g_object_get_type και μακροεντολές όπως οι G_OBJECT(), G_IS_OBJECT(), κτλ.). Προς το παρόν αυτές οι δηλώσεις μένουν εκτός τεκμηρίωσης. Μπορείτε να χρησιμοποιήσετε την ετικέτα <SUBSECTION Private> για ιδιωτικές δηλώσεις που δεν πρόκειται να εμφανιστούν στην τεκμηρίωση (έτσι αποφεύγετε τις προειδοποιήσεις για δηλώσεις που δεν χρησιμοποιούνται). Αν η βιβλιοθήκη σας περιέχει ιδιωτικούς τύπους, για τους οποίους δεν επιθυμείτε να εμφανίζονται στην ιεραρχία αντικειμένων και στη λίστα υλοποιημένων ή απαιτούμενων διεπαφών, προσθέσετε τους σε μία ιδιωτική υποενότητα. Αν θα τοποθετήσετε κλάσεις GObject και GObjectClass σε δημόσιες ή κλασσικές ενότητες εξαρτάται από το αν έχετε δημόσιες καταχωρήσεις (μεταβλητές,vmethods).

Μπορείτε, επίσης, να χρησιμοποιήσετε την ετικέτα <INCLUDE> ... </INCLUDE> για τα αρχεία #include που περιλαμβάνονται στις ενότητες συνοπτικής παρουσίασης. Περιέχει μία λίστα με αρχεία #include, χωρισμένα με κόμματα και χωρίς τα '<' και '>'. Αν δεν τη χρησιμοποιήσετε στο εσωτερικό κάποιας ενότητας, θα αφορά όλες τις ενότητες μέχρι το τέλος του αρχείου. Αν τη χρησιμοποιήσετε στο εσωτερικό μιας ενότητας, τότε θα αφορά μόνο τη συγκεκριμένη ενότητα.

## Έλεγχος αποτελέσματος

Κατά την εκτέλεση του GTK-Doc παράγονται αρχεία αναφορών που τοποθετούνται στον κατάλογο της τεκμηρίωσης. Πρόκειται για τα αρχεία: `<package>-undocumented.txt`, `<package>-undeclared.txt` και `<package>-unused.txt`. Είναι αρχεία απλού κειμένου, εύκολα στην ανάγνωση και επεξεργασία.

Το αρχείο `<package>-undocumented.txt` ξεκινά με μία περίληψη της κάλυψης της τεκμηρίωσης. Ακολουθούν δύο ενότητες που χωρίζονται μεταξύ τους με κενές γραμμές. Η πρώτη ενότητα αναφέρει τα σύμβολα που δε διαθέτουν τεκμηρίωση ή είναι ημιτελή. Η δεύτερη καταγράφει τα ίδια στοιχεία για την τεκμηρίωση των ενοτήτων. Ημιτελείς θεωρούνται οι καταχωρήσεις για τις οποίες υπάρχει τεκμηρίωση, αλλά στις οποίες π.χ. προστέθηκε μια νέα παράμετρος.

Το αρχείο `<package>-undeclared.txt` περιέχει σύμβολα που αναφέρονται στο αρχείο `<package>-sections.txt`, αλλά δε βρέθηκαν στον πηγαίο κώδικα. Θα πρέπει να ελέγξετε αν έχουν αφαιρεθεί ή αν περιέχουν συντακτικά λάθη.

Το αρχείο `<package>-unused.txt` περιέχει ονόματα συμβόλων για τα οποία η σάρωση του GTK-Doc βρήκε τεκμηρίωση, αλλά δεν γνωρίζει πού να την τοποθετήσει. Aυτό σημαίνει ότι τα σύμβολα δεν έχουν προστεθεί ακόμη στο αρχείο `<package>-sections.txt`.

Ενεργοποιήστε ή προσθέστε τη γραμμή `TESTS=($GTKDOC_CHECK)` στο Makefile.am. Αν έχετε εγκατεστημένη την έκδοση 1.9 ή μεταγενέστερη, θα πραγματοποιεί διάφορους ελέγχους κατά την εκτέλεση του `make check`.

Μπορείτε επίσης να δείτε τα αρχεία που παράγονται από το σαρωτή του πηγαίου κώδικα: `<package>-decl-list.txt` και `<package>-decl.txt`. Το πρώτο μπορεί να συγκριθεί με το αρχείο της ενότητας, αν αυτό συντηρείται χειροκίνητα. Το δεύτερο περιέχει όλες τις δηλώσεις από τις κεφαλίδες. Αν ένα σύμβολο λείπει μπορείτε να ελέγξετε αν περιέχεται σε αυτό το αρχείο.

Αν το έργο βασίζεται στο GObject, μπορείτε επίσης να δείτε τα αρχεία που παράγονται από το σαρωτή αντικειμένων: `<package>.args.txt`, `<package>.hierarchy.txt`, `<package>.interfaces.txt`, `<package>.prerequisites.txt` και `<package>.signals.txt`. Αν λείπουν σύμβολα από οποιοδήποτε από αυτά, μπορείτε να ζητήσετε από το gtkdoc να κρατήσει το ενδιάμεσο αρχείο σάρωσης για παραπέρα ανάλυση, αλλά εκτελώντας το ως `GTK_DOC_KEEP_INTERMEDIATE=1 make`.

## Τεκμηρίωση άλλων διεπαφών

Τόσο καιρό χρησιμοποιούσαμε το GTK-Doc για να καταγράψουμε το API του κώδικα. Οι επόμενες συνεδρίες περιέχουν προτάσεις για το πώς τα εργαλεία μπορούν να χρησιμοποιηθούν ώστε να καταγράψετε και άλλες επιφάνειες.

### Επιλογές γραμμής εντολών και σελίδες τεκμηρίωσης man

Δεδομένου ότι κάποιος μπορεί να παραγάγει σελίδες man για ένα docbook refentry επίσης, θα ήταν καλή ιδέα να χρησιμοποιηθεί και για αυτόν τον σκοπό. Με αυτόν τον τρόπο η διεπαφή γίνεται μέρος της αναφοράς και αποχτά την σελίδα-man δωρεάν.

#### Τεκμηρίωση του εργαλείου

Δημιουργήστε ένα refentry αρχείο ανά εργαλείο. Ακολουθώντας το παράδειγμά μας θα το ονομάσουμε `meep/docs/reference/meeper/meep.xml`. Για τις ετικέτες xml που πρέπει να χρησιμοποιηθούν και μπορούν να εξετάσουν το παραγόμενο αρχείο στον υποκατάλογο xml καθώς επίσης και τα παραδείγματα π.χ. στο glib.

#### Προσθήκη του έξτρα ελέγχου διαμόρφωσης

Έξτρα έλεγχοι διαμόρφωσης

    AC_ARG_ENABLE(man,
                  [AC_HELP_STRING([--enable-man],
                                  [regenerate man pages from Docbook [default=no]])],enable_man=yes,
                  enable_man=no)

    AC_PATH_PROG([XSLTPROC], [xsltproc])
    AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)

#### Προσθήκη των έξτρα κανόνων makefile

Έξτρα έλεγχοι διαμόρφωσης

    man_MANS = \
           meeper.1

    if ENABLE_GTK_DOC
    if ENABLE_MAN

    %.1 : %.xml
            @XSLTPROC@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<

    endif
    endif

    BUILT_EXTRA_DIST = $(man_MANS)
    EXTRA_DIST += meep.xml

### DBus interfaces

(FIXME: http://hal.freedesktop.org/docs/DeviceKit/DeviceKit.html, http://cgit.freedesktop.org/DeviceKit/DeviceKit/tree/doc/dbus)

## Συχνές ερωτήσεις

Ερώτηση Απάντηση
- Δεν υπάρχει ιεραρχία κλάσεων. Η συνάρτηση αντικειμένου `xxx_get_type()` δεν έχει εισαχθεί στο αρχείο `<package>.types`
- Εξακολουθεί να μην υπάρχει ιεραρχία κλάσεων. Ελλιπής ή λαθεμένη ονομασία στο αρχείο `<package>-sections.txt` (δείτε την αιτιολόγηση).
- Πάλι δεν έχω ιεραρχία κλάσεων. Ελέγξτε αν το όνομα του αντικειμένου (δηλαδή το όνομα του συγκεκριμένου παραδείγματος της δομής, π.χ. GtkWidget) περιλαμβάνεται στην κανονική ενότητα (δεν πρέπει να βρίσκεται εντός υποενότητας Standard ή Private).
- Δεν υπάρχει ευρετήριο συμβόλων. Το `<package>-docs.{xml,sgml}` περιέχει ένα ευρετήριο το οποίο περιλαμβάνει με xi:includes το παραγόμενο ευρετήριο;
- Δεν υπάρχουν σύνδεσμοι μεταξύ των συμβόλων και των κατάλληλων ενοτήτων της τεκμηρίωσης. Το doc-comment χρησιμοποιεί σωστά τις ετικέτες (έχουν προστεθεί #,% ή ()); Ελέγξτε αν το gtkdoc-fixxref προειδοποιεί για ανεπίλυτα xrefs.
- Μια νέα κλάση δεν εμφανίζεται στην τεκμηρίωση. Συμπεριλαμβάνεται μέσω xi:included η νέα σελίδα από το `<package>-docs.{xml,sgml}`;
- Ένα νέο σύμβολο δεν εμφανίζεται στην τεκμηρίωση. Είναι το doc-comment κανονικά μορφοποιημένο; Ελέγξτε για συντακτικά λάθη στην αρχή του σχολίου. Ελέγξτε αν το gtkdoc-fixxref προειδοποιεί για ανεπίλυτα xref. Ελέγξτε αν το σύμβολο είναι σωστά καταχωρημένο στο `<package>-sections.txt` σε μια δημόσια υποενότητα.
- Λείπει ένας τύπος από την ιεραρχία κλάσεων. Αν ο τύπος υπάρχει στο `<package>.hierarchy` αλλά όχι στο `xml/tree_index.sgml` τότε ελέγξτε ξανά ότι ο τύπος είναι σωστά τοποθετημένος στο `<package>-sections.txt`. Αν η περίσταση του τύπου (π.χ. GtkWidget) δεν είναι καταχωρημένη, ή είναι κατά λάθος σημειωμένη ως ιδιωτική, τότε δε θα εμφανιστεί.
- Λαμβάνω συνδέσμους foldoc για όλες τις σημειώσεις gobject. Ελέγξτε ότι το `xml/annotation-glossary.xml` είναι xi:included από το `<package>-docs.{xml,sgml}`.
- Μια παράμετρος περιγράφεται σε σχόλιο του πηγαίου κώδικα, αλλά δεν υπάρχει Ελέγξτε αν το πρωτότυπο στην κεφαλίδα περιέχει διαφορετικό όνομα για την παράμετρο από αυτό που αναφέρεται στον κώδικα.
- Πολλαπλά "IDs" για τον προορισμό συνδέσμου: XYZ Το σύμβολο XYZ εμφανίζεται δύο φορές στο `<package>-sections.txt`.
- Βρέθηκε το όνομα τύπου του στοιχείου στο namespace '', αλλά δεν αντιστοιχεί σε κανένα πρότυπο.

## Εργαλεία σχετικά με το gtk-doc

GtkDocPlugin - ένα πρόσθετο ενσωμάτωσης Trac GTK-Doc, που προσθέτει έγγραφα API σε ιστοσελίδες trac και ενσωματώνεται με την αναζήτηση trac.

Gtkdoc-depscan - ένα εργαλείο (μέρος του gtk-doc) για έλεγχο του χρησιμοποιούμενου API, επειδή οι ετικέτες στο API καθορίζουν την ελάχιστη απαιτούμενη έκδοση.

Έκδοση 1.1, Μάρτιος 2000
2000 Ίδρυμα Ελεύθερου Λογισμικού, Inc.

    Free Software Foundation, Inc. 51 Franklin Street,
            Suite 330, Boston, MA
            02110-1301  USA

Επιτρέπεται σε όλους η αντιγραφή και διανομή ακριβούς αντιγράφου του κειμένου αυτής της άδειας αλλά απαγορεύεται η αλλοίωσή του περιεχομένου του.

## Άδεια Ελεύθερης Τεκμηρίωσης GNU (GFDL)

### 0. ΠΡΟΟΙΜΙΟ

Σκοπός της παρούσας Άδειας είναι η δημιουργία εγχειριδίων, συγγραμμάτων ή άλλων εγγράφων που είναι ελεύθερα υπό την έννοια ότι παρέχουν σε όλους πραγματική ελευθερία αντιγραφής και αναδιανομής τους, με ή χωρίς τροποποιήσεις, για εμπορικούς ή μη εμπορικούς σκοπούς. Δευτερευόντως, η παρούσα Άδεια παρέχει έναν τρόπο για να αναγνωρίζεται το έργο του συγγραφέα και του εκδότη ενός έργου, χωρίς να μπορούν να θεωρηθούν υπεύθυνοι για τροποποιήσεις που έγιναν από τρίτους.

Η παρούσα Άδεια είναι άδεια τύπου copyleft, το οποίο σημαίνει ότι τα παράγωγα έργα του εγγράφου θα πρέπει να είναι και αυτά ελεύθερα υπό την ίδια έννοια. Πρόκειται για άδεια συμπληρωματική της Γενικής Άδειας Δημόσιας Χρήσης GNU, που είναι άδεια copyleft σχεδιασμένη για ελεύθερο λογισμικό.

Σχεδιάσαμε αυτήν την Άδεια για χρήση με εγχειρίδια ελεύθερου λογισμικού, γιατί το ελεύθερο λογισμικό χρειάζεται και ελεύθερη τεκμηρίωση: τα ελεύθερα προγράμματα πρέπει να συνοδεύονται από εγχειρίδια που παρέχουν τις ίδιες ελευθερίες που παρέχει και το λογισμικό. Ωστόσο, αυτή η Άδεια δεν περιορίζεται στα εγχειρίδια λογισμικού· μπορεί να χρησιμοποιηθεί για οποιοδήποτε έργο κειμένου, ανεξάρτητα από το θέμα του ή από το αν εκδίδεται σε έντυπη μορφή. Συνιστούμε αυτή την Άδεια, κυρίως, για διδακτικό υλικό ή έργα αναφοράς.

### 1. ΙΣΧΥΣ ΚΑΙ ΟΡΙΣΜΟΙ

Η Άδεια αυτή εφαρμόζεται σε κάθε εγχειρίδιο ή άλλο έργο που περιέχει ένδειξη του δικαιούχου δικαιωμάτων πνευματικής ιδιοκτησίας, ότι επιτρέπεται η διανομή του υπό τους όρους αυτής της Άδειας. Ως Έγγραφο, κατωτέρω, αναφέρεται κάθε τέτοιο εγχειρίδιο. Ως κάτοχος της άδειας χρήσης θεωρείται κάθε άτομο, και αναφέρεται ως εσείς.

Ως Τροποποιημένη Έκδοση του Εγγράφου θεωρείται κάθε έργο που περιέχει το Έγγραφο ή μέρος αυτού, είτε ως ακριβές αντίγραφο, είτε τροποποιημένο και/είτε μεταφρασμένο σε άλλη γλώσσα.

Ως Δευτερεύουσα Ενότητα θεωρείται κάθε παράρτημα ή αρχική ενότητα του Εγγράφου που αναφέρεται αποκλειστικά στη σχέση των εκδοτών ή συγγραφέων του Εγγράφου με το συνολικό θέμα του Εγγράφου (ή σχετικά ζητήματα), και που δεν περιέχει οτιδήποτε μπορεί να θεωρηθεί ότι εντάσσεται άμεσα στο συνολικό αυτό θέμα. (Επί παραδείγματι, αν το Έγγραφο αποτελεί, εν μέρει, σύγγραμμα μαθηματικών, η Δευτερεύουσα Ενότητα δεν επιτρέπεται να επεξηγεί μαθηματικές έννοιες.) Η σχέση μπορεί να αποτελεί ιστορική σύνδεση με το θέμα ή σχετικά ζητήματα, ή νομική, εμπορική, φιλοσοφική, ηθική ή πολιτική θέση επί του θέματος ή σχετικών ζητημάτων.

Αμετάβλητες Ενότητες είναι ορισμένες Δευτερεύουσες Ενότητες των οποίων οι τίτλοι αναφέρονται ρητώς ως τίτλοι Αμετάβλητων Ενοτήτων στην ένδειξη όπου αναφέρεται ότι το Έγγραφο δημοσιεύεται υπό τους όρους αυτής της Άδειας.

Τα Κείμενα Εξωφύλλου είναι σύντομα αποσπάσματα κειμένου που αναφέρονται ρητώς ως Κείμενα Εμπροσθοφύλλου ή Κείμενα Οπισθοφύλλου στην ένδειξη όπου αναφέρεται ότι το Έγγραφο δημοσιεύεται υπό τους όρους αυτής της Άδειας.

Ως Διαφανές αντίγραφο του Εγγράφου θεωρείται κάθε αντίγραφο σε μορφή αναγνώσιμη από μηχανή, όταν συντρέχουν οι εξής προϋποθέσεις: Οι τεχνικές προδιαγραφές τις μορφής αυτής είναι διαθέσιμες για δημόσια χρήση· τα περιεχόμενα του αντιγράφου μπορούν να προβληθούν και να τύχουν επεξεργασίας άμεσα και απλά, με χρήση γενόσημων επεξεργαστών κειμένου ή ( για εικόνες αποτελούμενες από εικονοστοιχεία) γενόσημων προγραμμάτων ζωγραφικής ή (για σχέδια) ευρέως διαθέσιμων επεξεργαστών σχεδίων· το αντίγραφο είναι κατάλληλο για είσοδο σε μορφοποιητές κειμένου ή για αυτόματη μετάφραση σε ποικίλες μορφές κατάλληλες για είσοδο σε μορφοποιητές κειμένου. Δεν θεωρείται Διαφανές ένα αντίγραφο σε Διαφανή, κατά τα λοιπά, μορφή αρχείου, του οποίου η σήμανση έχει σχεδιαστεί κατά τρόπο που να αποτρέπει ή να αποθαρρύνει τη μελλοντική τροποποίηση του αντιγράφου από τους αναγνώστες. Το αντίγραφο που δεν είναι Διαφανές ονομάζεται Αδιαφανές.

Παραδείγματα μορφών κατάλληλων για τη δημιουργία Διαφανών αντιγράφων είναι η απλή ASCII χωρίς σήμανση, η μορφή εισόδου Texinfo, η μορφή εισόδου LaTeX, η SGML ή XML που χρησιμοποιούν δημοσίως διαθέσιμη DTD, και η HTML που συμμορφώνεται με πρότυπα και έχει σχεδιαστεί για τροποποίηση από τον άνθρωπο. Στις Αδιαφανείς μορφές συμπεριλαμβάνονται η PostScript, η PDF, οι ιδιοταγείς μορφές που αναγιγνώσκονται μόνο από ιδιοταγείς επεξεργαστές κειμένου, η SGML ή XML των οποίων η DTD και/ή τα εργαλεία επεξεργασίας δεν είναι δημοσίως διαθέσιμα, και η HTML με αποκλειστικό προορισμό την έξοδο που παράγουν μηχανοκίνητα ορισμένοι επεξεργαστές κειμένου.

Ως Σελίδα Τίτλου θεωρείται, για τα έντυπα βιβλία, η σελίδα τίτλου αυτή καθαυτή, καθώς και τυχόν επόμενες σελίδες που απαιτούνται για την ευανάγνωστη συμπερίληψη του υλικού που οφείλει να εμφανίζεται στη σελίδα τίτλου σύμφωνα με την παρούσα Άδεια. Για τα έργα σε μορφές που δεν περιλαμβάνουν σελίδα τίτλου αυτή καθαυτή, ως Σελίδα Τίτλου θεωρείται το κείμενο που βρίσκεται κοντά στην εμφανέστερη εμφάνιση του τίτλου του έργου και το οποίο προηγείται του σώματος του κειμένου.

### 2. ΑΚΡΙΒΗ ΑΝΤΙΓΡΑΦΑ

Σας χορηγείται άδεια αντιγραφής και διανομής του Εγγράφου σε οποιοδήποτε μέσο, για εμπορικό ή μη εμπορικό σκοπό, με την προϋπόθεση ότι σε κάθε αντίγραφο θα συμπεριλαμβάνετε την παρούσα Άδεια, τις ενδείξεις δικαιωμάτων πνευματικής ιδιοκτησίας και την ένδειξη άδειας χρήσης που αναφέρει ότι για το έγγραφο ισχύει η παρούσα Άδεια, και με την προϋπόθεση ότι δεν θα προσθέσετε κανένα επιπρόσθετο όρο πέρα από τους όρους της Άδειας. Δεν σας επιτρέπεται να χρησιμοποιήσετε τεχνικά μέτρα για την παρεμπόδιση ή τον έλεγχο της ανάγνωσης ή περαιτέρω αντιγραφής των αντιγράφων που δημιουργείτε ή διανέμετε. Ωστόσο, μπορείτε να αποδεχτείτε αποζημίωση σε αντάλλαγμα των αντιγράφων. Αν διανέμετε επαρκή αριθμό αντιγράφων, θα πρέπει να συμμορφωθείτε και με τους όρους της ενότητας 3.

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

### 3. ΑΝΤΙΓΡΑΦΗ ΣΕ ΜΕΓΑΛΕΣ ΠΟΣΟΤΗΤΕΣ

Αν εκδώσετε περισσότερα από 100 στον αριθμό έντυπα αντίγραφα του Εγγράφου, και η ένδειξη άδειας χρήσης του Εγγράφου προϋποθέτει την ύπαρξη Κειμένων Εξωφύλλου, θα πρέπει να εσωκλείσετε τα αντίγραφα σε εξώφυλλα που θα περιέχουν, με καθαρό και ευανάγνωστο τρόπο, όλα τα ακόλουθα κείμενα εξωφύλλου: Κείμενα Εμπροσθοφύλλου στο εμπροσθόφυλλο και Κείμενα Οπισθοφύλλου στο οπισθόφυλλο. Επίσης, και τα δύο εξώφυλλα θα πρέπει να αναφέρουν, καθαρά και ευανάγνωστα, εσάς ως εκδότη των αντιγράφων. Στο εμπροσθόφυλλο θα πρέπει να αναφέρεται ο πλήρης τίτλος του Εγγράφου, και όλες οι λέξεις του τίτλου θα πρέπει να είναι εξίσου προβεβλημένες και εμφανείς. Επιτρέπεται να προσθέσετε επιπρόσθετο υλικό στα εξώφυλλα. Η παραγωγή αντιγράφων που διαφέρουν μόνο ως προς τα εξώφυλλα, εφόσον διατηρείται ο τίτλος του Εγγράφου και τηρούνται οι παρούσες προϋποθέσεις, μπορεί να θεωρηθεί, κατά τα λοιπά, ως παραγωγή ακριβών αντιγράφων.

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

Αν εκδώσετε περισσότερα από 100 στον αριθμό Αδιαφανή αντίγραφα του Εγγράφου, είτε θα πρέπει να συμπεριλάβετε ένα Διαφανές αντίγραφο (σε μορφή αναγνώσιμη από μηχανή) σε κάθε Αδιαφανές αντίγραφο, είτε θα πρέπει να αναφέρετε — μαζί ή σε κάθε Αδιαφανές αντίγραφο — μια δημοσίως προσβάσιμη τοποθεσία δικτύου υπολογιστών από την οποία θα μπορεί το ευρύ κοινό που χρησιμοποιεί δίκτυα να λάβει ανώνυμα, δωρεάν, και με χρήση πρωτοκόλλων δικτύου δημοσίων προτύπων, ένα ολοκληρωμένο Διαφανές αντίγραφο του Εγγράφου, χωρίς προσθήκες. Αν επιλέξετε τη δεύτερη επιλογή, όταν ξεκινήσετε τη διανομή των Αδιαφανών αντιγράφων, θα πρέπει να λάβετε λελογισμένα μέτρα για να διασφαλίσετε ότι το Διαφανές αντίγραφο θα παραμείνει προσβάσιμο στην ως άνωθεν τοποθεσία για τουλάχιστον ένα έτος μετά την τελευταία δημόσια διανομή Αδιαφανούς αντιγράφου αυτής της έκδοσης (είτε πρόκειται για άμεση διανομή είτε για διανομή μέσω των πρακτόρων ή λιανοπωλητών σας).

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

### 4. ΤΡΟΠΟΠΟΙΗΣΕΙΣ

Σας χορηγείται άδεια αντιγραφής και διανομής Τροποποιημένων Εκδόσεων του Εγγράφου υπό τους όρους των ενοτήτων 2 και 3 ανωτέρω, με την προϋπόθεση ότι θα δημοσιεύσετε την Τροποποιημένη Έκδοση υπό την παρούσα Άδεια ως έχει, όπου ως Έγγραφο θα νοείται η Τροποποιημένη Έκδοση. Άρα, θα χορηγείται άδεια διανομής και τροποποίησης της Τροποποιημένης Έκδοσης σε οποιονδήποτε κατέχει αντίγραφό της. Επιπροσθέτως, στην Τροποποιημένη Έκδοση θα πρέπει να κάνετε τα εξής:

- Α

  Στη Σελίδα Τίτλου (και τα εξώφυλλα, αν υφίστανται), χρησιμοποιήστε τίτλο διακριτό από τον τίτλο του Εγγράφου και των προηγούμενων εκδόσεών του (τυχόν προηγούμενες εκδόσεις οφείλουν να αναφέρονται στην ενότητα Ιστορικού του Εγγράφου). Μπορείτε να χρησιμοποιήσετε τον ίδιο τίτλο με τον τίτλο προηγούμενης έκδοσης, αν λάβετε άδεια από τον αρχικό εκδότη της προηγούμενης έκδοσης.

- Β

  Αναφέρετε στη Σελίδα Τίτλου, υπό την ιδιότητα του συγγραφέα, όλα τα άτομα ή τους φορείς που ευθύνονται για τη συγγραφή ή την τροποποίηση της Τροποποιημένης Έκδοσης, μαζί με τουλάχιστον πέντε από τους κύριους συγγραφείς του Εγγράφου ( ή όλους τους κύριους συγγραφείς, αν είναι λιγότεροι από πέντε).

- Γ

  Αναφέρετε στη Σελίδα Τίτλου, υπό την ιδιότητα του εκδότη, το όνομα του εκδότη της Τροποποιημένης Έκδοσης.

- Δ

  Διατηρήστε όλες τις ενδείξεις δικαιωμάτων πνευματικής ιδιοκτησίας του Εγγράφου.

- Ε

  Προσθέστε την κατάλληλη ένδειξη δικαιωμάτων πνευματικής ιδιοκτησίας για τις τροποποιήσεις σας στις υπόλοιπες ενδείξεις δικαιωμάτων πνευματικής ιδιοκτησίας.

- ΣΤ

  Συμπεριλάβετε, αμέσως μετά τις ενδείξεις δικαιωμάτων πνευματικής ιδιοκτησίας, μια ένδειξη άδειας χρήσης που θα χορηγεί δημόσια άδεια χρήσης της Τροποποιημένης Έκδοσης υπό τους όρους της παρούσας Άδειας. Η μορφή της ένδειξης αυτής παρατίθεται στο Συμπλήρωμα που ακολουθεί.

- Ζ

  Διατηρήστε σε αυτή την ένδειξη άδειας χρήσης τους πλήρεις καταλόγους Αμετάβλητων Ενοτήτων και απαιτούμενων Κειμένων Εξωφύλλου που παρατίθενται στην ένδειξη άδειας χρήσης του Εγγράφου.

- Η

  Συμπεριλάβετε αντίγραφο, χωρίς τροποποιήσεις, της παρούσας Άδειας.

- Θ

  Διατηρήστε την ενότητα με τίτλο Ιστορικό, καθώς και τον τίτλο της, και προσθέστε μία εγγραφή που θα αναφέρει τουλάχιστον τον τίτλο, το έτος, τους νέους συγγραφείς και τον εκδότη της Τροποποιημένης Έκδοσης όπως αυτά αναφέρονται στη Σελίδα Τίτλου. Αν δεν υπάρχει ενότητα με τίτλο Ιστορικό στο Έγγραφο, δημιουργήστε αυτήν την ενότητα, αναγράφοντας τον τίτλο, το έτος, τους νέους συγγραφείς και τον εκδότη του Εγγράφου, όπως αυτά αναφέρονται στη Σελίδα Τίτλου, και προσθέτοντας μία εγγραφή που θα περιγράφει την Τροποποιημένη Έκδοση σύμφωνα με την προηγούμενη πρόταση.

- Ι

  Διατηρήστε την τοποθεσία δικτύου που ενδεχομένως παρέχεται στο Έγγραφο για δημόσια πρόσβαση σε Περατό αντίγραφο του Εγγράφου, καθώς και τυχόν άλλες τοποθεσίες δικτύου που παρέχονται στο έγγραφο και αφορούν προηγούμενες εκδόσεις του. Οι τοποθεσίες αυτές μπορούν να τοποθετηθούν στην ενότητα Ιστορικό. Μπορείτε να παραλείψετε τοποθεσίες δικτύου για έργα που εκδόθηκαν τουλάχιστον τέσσερα έτη πριν από το ίδιο το Έγγραφο, ή αν ο αρχικός εκδότης της αντίστοιχης έκδοσης σας δώσει την άδεια.

- ΙΑ

  Αν υπάρχει ενότητα με τίτλο Ευχαριστίες ή Αφιέρωση, διατηρήστε τον τίτλο της ενότητας, και διατηρήστε στο σώμα της ενότητας την ουσία και το ύφος των ευχαριστιών και/ή αφιερώσεων που συμπεριλαμβάνονται σε αυτή.

- ΙΒ

  Διατηρήστε όλες τις Αμετάβλητες Ενότητες του Εγγράφου, χωρίς καμία τροποποίηση στο κείμενο και τον τίτλο τους. Η αρίθμηση των ενοτήτων, —ή άλλο ισοδύναμό της—, δεν θεωρείται τμήμα του τίτλου των ενοτήτων.

- ΙΓ

  Διαγράψτε τυχόν ενότητες με τίτλο Έγκριση. Αυτού του είδους οι ενότητες δεν επιτρέπεται να συμπεριληφθούν στην Τροποποιημένη Έκδοση.

- ΙΔ

  Μη μετατρέπετε τον τίτλο καμίας προϋπάρχουσας ενότητας στον τίτλο Έγκριση ή σε τίτλο που συγκρούεται με τον τίτλο Αμετάβλητης Ενότητας.

Αν η Τροποποιημένη Έκδοση περιλαμβάνει νέες αρχικές ενότητες ή παραρτήματα, που εμπίπτουν στον ορισμό των Δευτερευουσών Ενοτήτων, και δεν περιέχουν υλικό που να είναι προϊόν αντιγραφής του Εγγράφου, μπορείτε, εφόσον το επιθυμείτε, να ορίσετε ορισμένες ή όλες αυτές τις ενότητες ως αμετάβλητες. Για να το πράξετε, προσθέστε τους τίτλους αυτών των ενοτήτων στον κατάλογο Αμετάβλητων Ενοτήτων στην ένδειξη άδειας χρήσης της Τροποποιημένης Έκδοσης. Οι τίτλοι αυτοί θα πρέπει να είναι διακριτοί από τους υπόλοιπους τίτλους ενοτήτων..

Μπορείτε να προσθέσετε ενότητα με τίτλο Έγκριση, με την προϋπόθεση ότι περιλαμβάνει αποκλειστικά εγκρίσεις της δικής σας Τροποποιημένης Έκδοσης από διάφορους φορείς, —επί παραδείγματι, δηλώσεις αξιολόγησης ομοτίμων ή δηλώσεις ότι το κείμενο έχει εγκριθεί από έναν οργανισμό ως έγκυρος ορισμός ενός προτύπου.

Μπορείτε να προσθέσετε κείμενο μέχρι και πέντε λέξεις ως Κείμενο Εμπροσθοφύλλου, καθώς και κείμενο μέχρι και 25 λέξεις ως Κείμενο Οπισθοφύλλου, στο τέλος του καταλόγου Κειμένων Εξωφύλλου της Τροποποιημένης Έκδοσης. Κάθε μεμονωμένος φορέας επιτρέπεται να προσθέτει μόνο ένα Κείμενο Εμπροσθοφύλλου και ένα Κείμενο Οπισθοφύλλου (ο ίδιος ή εξ ονόματος του ίδιου). Αν το Έγγραφο περιέχει ήδη κείμενο εξωφύλλου για το ίδιο εξώφυλλο, —που είχατε προσθέσει προηγουμένως είτε εξ ονόματός σας είτε εξ ονόματος του φορέα που εκπροσωπείτε—, δεν σας επιτρέπεται να προσθέσετε επιπλέον εξώφυλλο· σας επιτρέπεται ωστόσο να αντικαταστήσετε το προηγούμενο, με ρητή άδεια από τον εκδότη που είχε προσθέσει το προηγούμενο εξώφυλλο.

Μέσω της παρούσας άδειας, ο/οι συγγραφείς και ο/οι εκδότες του Εγγράφου δεν χορηγούν άδεια χρήσης των ονομάτων τους για διαφημιστικούς σκοπούς ή για την έγκριση, —ρητή ή υπονοούμενη—, οποιασδήποτε Τροποποιημένης Έκδοσης.

### 5. ΣΥΝΔΥΑΣΜΟΣ ΕΓΓΡΑΦΩΝ

Μπορείτε να συνδυάσετε το Έγγραφο με άλλα έγγραφα που υπόκεινται στους όρους της παρούσας Άδειας, σύμφωνα με τους ανωτέρω όρους της ενότητας 4 για τις τροποποιημένες εκδόσεις, με την προϋπόθεση ότι ο συνδυασμός θα περιλαμβάνει όλες τις Αμετάβλητες Ενότητες όλων των πρωτότυπων εγγράφων, χωρίς τροποποιήσεις, και ότι θα αναφέρονται ως Αμετάβλητες Ενότητες του συνδυασμένου έργου στην ένδειξη άδειας χρήσης του.

Το συνδυασμένο έργο οφείλει να περιέχει ένα μόνο αντίγραφο της παρούσας Άδειας, και επιτρέπεται η αντικατάσταση πολλαπλών ταυτόσημων Αμετάβλητων Ενοτήτων από ένα μόνο αντίγραφό τους. Αν υφίστανται πολλαπλές Αμετάβλητες Ενότητες με τον ίδιο τίτλο αλλά διαφορετικό περιεχόμενο, φροντίστε να κατασταθεί μοναδικός ο τίτλος κάθε ενότητας, προσθέτοντας στο τέλος του τίτλου, εντός παρενθέσεων, το όνομα του αρχικού συγγραφέα ή εκδότη της ενότητας εφόσον τα γνωρίζετε, ή, εναλλακτικά, ένα μοναδικό αριθμό. Φροντίστε να κάνετε τις ίδιες αλλαγές στους τίτλους των ενοτήτων που αναγράφονται στον κατάλογο Αμετάβλητων Ενοτήτων στην ένδειξη άδειας χρήσης του συνδυασμένου έργου.

Στο συνδυασμό θα πρέπει να συνδυάσετε όλες τις ενότητες με τίτλο Ιστορικό που ενδεχομένως διαθέτουν τα πρωτότυπα έγγραφα, δημιουργώντας μία μοναδική ενότητα με τίτλο Ιστορικό. Κατά τον ίδιο τρόπο θα πρέπει να συνδυάσετε και όλες τις ενότητες με τίτλο Ευχαριστίες ή όλες τις ενότητες με τίτλο Αφιέρωση. Θα πρέπει να διαγράψετε όλες τις ενότητες με τίτλο Έγκριση.

### 6. ΣΥΛΛΟΓΗ ΕΓΓΡΑΦΩΝ

Μπορείτε να δημιουργήσετε συλλογή που θα περιλαμβάνει το παρόν Έγγραφο μαζί με άλλα έγγραφα που υπόκεινται στους όρους της παρούσας Άδειας, και να συμπεριλάβετε στη συλλογή ένα μόνο αντίγραφο της παρούσας Άδειας, που θα αντικαθιστά τα μεμονωμένα αντίγραφά της στα διάφορα έγγραφα, με την προϋπόθεση ότι, κατά τα λοιπά, θα συμμορφωθείτε με τους κανόνες της παρούσας Άδειας για την παραγωγή πιστών αντιγράφων καθενός από αυτά τα έγγραφα.

Μπορείτε να εξάγετε ένα μεμονωμένο έγγραφο από μια συλλογή τέτοιου είδους, και να το διανείμετε ξεχωριστά υπό τους όρους της παρούσας Άδειας, με την προϋπόθεση ότι θα προσθέσετε αντίγραφο της παρούσας Άδειας στο εξαχθέν έγγραφο, και ότι, κατά τα λοιπά, θα συμμορφωθείτε με τους κανόνες της παρούσας Άδειας για την παραγωγή ακριβών αντιγράφων αυτού του εγγράφου.

### 7. ΣΥΡΡΑΦΗ ΜΕ ΑΝΕΞΑΡΤΗΤΑ ΕΡΓΑ

Αν το Εγγράφο ή τα παράγωγά του συμπεριληφθούν, μαζί με άλλα ξεχωριστά και ανεξάρτητα έγγραφα ή έργα, σε τόμο ενός μέσου αποθήκευσης ή διανομής, ο τόμος αυτός, στο σύνολό του, δεν θεωρείται Τροποποιημένη Έκδοση του εγγράφου, με την προϋπόθεση ότι δεν διεκδικούνται δικαιώματα πνευματικής ιδιοκτησίας για αυτόν. Ο εν λόγω τόμος ονομάζεται συρραφή και η παρούσα άδεια δεν ισχύει για τα υπόλοιπα αυθύπαρκτα έργα που συμπεριλαμβάνονται σε αυτόν, πέραν του Έγγραφο, απλώς και μόνο επειδή ανήκουν σε αυτή τη συρραφή, εκτός εάν αποτελούν και αυτά παράγωγα έργα του Εγγράφου. Αν για αυτά τα αντίγραφα του Εγγράφου ισχύουν οι όροι για τα Κείμενα Εξωφύλλου της ενότητας 3, τότε, αν το Έγγραφο αντιστοιχεί σε λιγότερο από το ένα τέταρτο του συνόλου της συρραφής, τα Κείμενα Εξωφύλλου του Εγγράφου επιτρέπεται να τοποθετηθούν σε εξώφυλλα εντός της συρραφής που εσωκλείουν μόνο το Έγγραφο. Ειδάλλως, θα πρέπει να τοποθετηθούν σε εξώφυλλα που εσωκλείουν ολόκληρη τη συρραφή.

### 8. ΜΕΤΑΦΡΑΣΗ

Η μετάφραση θεωρείται μορφή τροποποίησης, άρα μπορείτε να διανέμετε μεταφράσεις του Εγγράφου υπό τους όρους της ενότητας 4. Η αντικατάσταση των Αμετάβλητων Ενοτήτων από μεταφράσεις απαιτεί ειδική άδεια από τους κατόχους των δικαιωμάτων πνευματικής ιδιοκτησίας, αλλά επιτρέπεται η συμπερίληψη στο Έγγραφο μεταφράσεων ορισμένων ή όλων των Αμετάβλητων Ενοτήτων, επιπλέον των πρωτότυπων εκδόσεων αυτών των Αμετάβλητων Ενοτήτων. Μπορείτε να προσθέσετε μεταφράσεις της παρούσας Άδειας, με την προϋπόθεση ότι θα συμπεριλάβετε και την πρωτότυπη Αγγλική έκδοση της Άδειας. Σε περίπτωση ασυμφωνίας μεταξύ μετάφρασης και πρωτότυπης Αγγλικής έκδοσης της Άδειας, ισχύει η πρωτότυπη Αγγλική έκδοση.

### 9. ΚΑΤΑΡΓΗΣΗ

Δεν σας επιτρέπεται η αντιγραφή, τροποποίηση, περαιτέρω παραχώρηση άδειας εκμετάλλευσης ή διανομή του Εγγράφου παρά μόνο με τον τρόπο που ρητά προβλέπεται από αυτήν την Άδεια. Κάθε άλλη απόπειρα αντιγραφής, τροποποίησης, περαιτέρω παραχώρησης άδειας εκμετάλλευσης ή διανομής του Εγγράφου είναι άκυρη και αυτομάτως καταργεί τα δικαιώματα που σας παραχωρεί η παρούσα Άδεια. Ωστόσο, τα μέρη στα οποία παρείχατε αντίγραφα ή δικαιώματα υπό τους όρους της παρούσας Άδειας, δεν θα απωλέσουν τα δικαιώματα χρήσης τους, εφόσον εξακολουθούν να συμμορφώνονται πλήρως με τους όρους της Άδειας.

### 10. ΜΕΛΛΟΝΤΙΚΕΣ ΑΝΑΘΕΩΡΗΣΕΙΣ ΤΗΣ ΠΑΡΟΥΣΑΣ ΑΔΕΙΑΣ

Το Ίδρυμα Ελεύθερου Λογισμικού έχει το δικαίωμα να δημοσιεύει περιστασιακά αναθεωρημένες ή/και νέες εκδόσεις της Ελεύθερης Άδειας Τεκμηρίωσης GNU (GFDL). Αυτές οι νέες εκδόσεις θα είναι συναφείς στο πνεύμα με την παρούσα έκδοση, όμως ενδέχεται να διαφέρουν στις λεπτομέρειες, καθώς επιλαμβάνονται νέων προβλημάτων και ζητημάτων. Βλέπε http://www.gnu.org/copyleft/.

Σε κάθε έκδοση δίνεται ένας διακριτικός αριθμός έκδοσης. Εάν στο Έγγραφο καθορίζεται ότι ισχύει ένας συγκεκριμένος αριθμός έκδοσης της παρούσας Άδειας ή οποιαδήποτε μεταγενέστερη έκδοση, μπορείτε να επιλέξετε μεταξύ των όρων και προϋποθέσεων είτε αυτής της έκδοσης, είτε οποιασδήποτε μεταγενέστερης έκδοσης έχει δημοσιευτεί (όχι με μορφή σχεδίου) από το Ίδρυμα Ελεύθερου Λογισμικού. Εάν στο Πρόγραμμα δεν καθορίζεται αριθμός έκδοσης της Άδειας, μπορείτε να επιλέξετε οποιαδήποτε έκδοση έχει δημοσιευθεί (όχι με μορφή σχεδίου) από το Ίδρυμα Ελεύθερου Λογισμικού (FSF).

### Συμπλήρωμα

Για να χρησιμοποιήσετε την παρούσα Άδεια σε έγγραφο το οποίο συγγράψατε, θα πρέπει να συμπεριλάβετε ένα αντίγραφο της Άδειας στο έγγραφο και να τοποθετήσετε τις ακόλουθες ενδείξεις δικαιωμάτων πνευματικής ιδιοκτησίας και άδειας χρήσης αμέσως μετά τη σελίδα τίτλου:

> Copyright © ΕΤΟΣ ΤΟ ΟΝΟΜΑ ΣΑΣ.

> Χορηγείται άδεια αντιγραφής, διανομής και/ή τροποποίησης του παρόντος εγγράφου υπό τους όρους της έκδοσης 1.1 της Ελεύθερης Άδειας Τεκμηρίωσης GNU (GFDL), ή οποιασδήποτε μεταγενέστερης έκδοσής αυτής από το Ίδρυμα Ελεύθερου Λογισμικού (FSF)· οι Αμετάβλητες Ενότητες είναι οι ΚΑΤΑΛΟΓΟΣ ΤΙΤΛΩΝ, τα Κείμενα εμπροσθοφύλλου είναι τα ΚΑΤΑΛΟΓΟΣ, και τα Κείμενα Οπισθοφύλλου είναι τα ΚΑΤΑΛΟΓΟΣ. Αντίγραφο της άδειας συμπεριλαμβάνεται στην ενότητα με τίτλο GNU Free Documentation License.

Αν δεν περιέχονται Αμετάβλητες Ενότητες, γράψτε χωρίς Αμετάβλητες Ενότητες, αντί να απαριθμήσετε τις αμετάβλητες ενότητες. Αν δεν περιέχονται Κείμενα Εμπροσθοφύλλου, γράψτε χωρίς Κείμενα Εμπροσθοφύλλου αντί για τα Κείμενα Εμπροσθοφύλλου είναι τα ΚΑΤΑΛΟΓΟΣ· ομοίως για τα Κείμενα Οπισθοφύλλου.

Αν το έγγραφό σας περιέχει μη ασήμαντα παραδείγματα πηγαίου κώδικα, συνιστούμε την παράλληλη δημοσίευσή τους υπό τους όρους της άδειας ελεύθερου λογισμικού της αρεσκείας σας, ώστε να επιτρέψετε τη χρήση τους σε ελεύθερο λογισμικό. Παράδειγμα τέτοιας άδειας αποτελεί η Γενική Άδεια Δημόσιας Χρήσης GNU.