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

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

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

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

Περιορισμοί
Σημειώστε, ότι το GTK-Doc υποστηρίζει το #ifndef(__GTK_DOC_IGNORE__), αλλά όχι το #if !defined(__GTK_DOC_IGNORE__) ή άλλους συνδυασμούς.

Σχόλια τεκμηρίωσης
Ένα σχόλιο πολλαπλών γραμμών που διαθέτει ένα επιπλέον «*» στην αρχή αποτελεί ένα μπλοκ τεκμηρίωσης που λαμβάνεται υπόψη από τα εργαλεία του 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 για να αναφερθείτε σε ένα πεδίο μέσα σε μια δομή και #GObjectClass.foo_bar() για να αναφερθείτε σε μια vmethod.
Αν θέλετε να χρησιμοποιήσετε τους ειδικούς χαρακτήρες «<», «>», «()», «@», «%» ή «#» στην τεκμηρίωση, χωρίς να φοβάστε ότι θα τους αλλάξει το GTK-Doc, μπορείτε να χρησιμοποιήσετε τις οντότητες XML «&lt;», «&gt;», «&lpar;», «&rpar;», «&commat;», «&percnt;» και «&num;», αντίστοιχα, ή να χρησιμοποιήσετε την ανάποδη κάθετο «\» ως χαρακτήρα διαφυγής.
Το DocBook μπορεί να κάνει παραπάνω από απλούς συνδέσμους. Μπορεί κάποιος να έχει και λίστες, παραδείγματα, κεφαλίδες και εικόνες. Από την έκδοση 1.20 και μετά, ο προτιμώμενος τρόπος είναι με τη χρήση ενός υποσυνόλου της βασικής σύνταξης για μορφοποίηση κειμένου που ονομάζεται Markdown. Σε παλιότερες εκδόσεις GTK-Doc οποιαδήποτε τεκμηρίωση που περιλαμβάνει Markdown θα αποδίδεται ως έχει. Για παράδειγμα, οι καταχωρήσεις της λίστας θα εμφανίζονται σαν γραμμές που αρχίζουν με μια παύλα.
Αν και τώρα προτιμάται η Markdown μπορεί κάποιος να αναμείξει και τις δύο. Ένας περιορισμός εδώ είναι ότι κάποιος μπορεί να χρησιμοποιήσει το docbook xml μέσα στο markdown, αλλά το markdown μέσα στο docbook xml δεν υποστηρίζεται.
Σε παλιότερες εκδόσεις του GTK-Doc, αν χρειάζεστε υποστήριξη για πρόσθετη μορφοποίηση, θα πρέπει να ενεργοποιήσετε τη χρήση των ετικετών docbook XML μέσα στα doc-comments θέτοντας το --xml-mode (ή το --sgml-mode) στη μεταβλητή MKDB_OPTIONS μέσα στο Makefile.am.

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

/**
 * ταυτοποιητής:
 *
 * παράγραφος τεκμηρίωσης ...
 *
 * # Δευτερεύουσα επικεφαλίδα #
 *
 * ## Δεύτερη δευτερεύουσα επικεφαλίδα
 *
 * # Δευτερεύουσα επικεφαλίδα με μια άγκυρα συνδέσμου # {#επικεφαλίδα-δύο}
 *
 * περισσότερη τεκμηρίωση:
 *
 * - στοιχείο 1 καταλόγου
 *
 *   Παράγραφος μέσα σε ένα στοιχείο καταλόγου.
 *
 * - στοιχείο καταλόγου 2
 *
 * 1. αριθμημένο στοιχείο καταλόγου
 *
 * 2. άλλο αριθμημένο στοιχείο καταλόγου
 *
 * Μια άλλη παράγραφος. [Ένας σύνδεσμος στην ιστοσελίδα GNOME](http://www.gnome.org/)
 *
 * ![μια ενσωματωμένη εικόνα ](plot-result.png)
 *
 * [Ένας σύνδεσμος στην από πάνω άγκυρα επικεφαλίδας][επικεφαλίδα-δύο]
 *
 * Ένα παράδειγμα γλώσσας C:
 * |[<!-- language="C" -->
 * GtkWidget *label = gtk_label_new ("Gorgeous!");
 * ]|
 */

Μπορείτε να βρείτε περισσότερα παραδείγματα για το ποιες ετικέτες markdown υποστηρίζονται στη διεύθυνση GTK+ Documentation Markdown Syntax Reference.
Όπως αναφέρθηκε και προηγουμένως το 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> 	 The name links the section documentation to the respective part in the <package>-sections.txt file. The name given here should match the <FILE> tag in the <package>-sections.txt file.
@short_description 	 Περιγραφή της ενότητας σε μια γραμμή, η οποία θα εμφανίζεται, στη συνέχεια, μετά από τους συνδέσμους του πίνακα περιεχομένων και στην αρχή της σελίδας της ενότητας.
@title 	 Ο τίτλος της ενότητας από προεπιλογή έχει όνομα <name> από τη δήλωση SECTION. Μπορεί να παρακαμφθεί με το πεδίο @title.
@section_id 	 Παρακάμπτει τη χρήση του τίτλου ως αναγνωριστικό της ενότητας. Για αντικείμενα GOBject το <title> χρησιμοποιείται ως section_id και για άλλες ενότητες είναι <MODULE>-<title>.
@see_also 	 Λίστα συμβόλων σχετικών με αυτή την ενότητα.
@stability 	 Άτυπη περιγραφή του επιπέδου σταθερότητας του συγκεκριμένου API. Σας συνιστούμε τη χρήση ενός από τους ακόλουθους όρους:
Σταθερή - Μια σταθερή διεπαφή επιτρέπει σε τρίτους να αναπτύσσουν εφαρμογές για τις διεπαφές αυτές, να τις δημοσιεύουν και να είναι βέβαιοι ότι οι εφαρμογές θα τρέχουν σε όλες τις ελάσσονες εκδόσεις του προϊόντος (οι οποίες θα είναι μεταγενέστερες της διεπαφής και θα ανήκουν στην ίδια μείζονα έκδοση). Ακόμη και όταν πρόκειται για μείζονες νέες εκδόσεις, οι ασυμβατότητες αναμένεται να είναι σπάνιες και να οφείλονται σε σοβαρούς λόγους.
Ασταθής - Ασταθείς είναι οι πειραματικές ή μεταβατικές διεπαφές. Συνήθως χρησιμοποιούνται για να παρέχουν σε τρίτους πρώιμη πρόσβαση σε νέες ή διαρκώς εξελισσόμενες τεχνολογίες, ή ως ενδιάμεσες λύσεις για προβλήματα για τα οποία αναμένεται μια γενικότερη λύση. Δεν υφίσταται καμία εγγύηση συμβατότητας μεταξύ μιας ελάσσονας έκδοσης και της επόμενης.
Ιδιωτική - Διεπαφή που μπορεί να χρησιμοποιηθεί εντός της στοίβας του GNOME, αλλά δε διαθέτει τεκμηρίωση που να απευθύνεται στους τελικούς χρήστες. Τέτοιου είδους συναρτήσεις μπορούν να χρησιμοποιούνται μόνο στο πλαίσιο σαφώς καθορισμένων και τεκμηριωμένων διαδικασιών.
Εσωτερική - Μια διεπαφή που είναι εσωτερική σε ένα άρθρωμα και δεν απαιτεί την ύπαρξη τεκμηρίωσης για τον τελικό χρήστη. Οι συναρτήσεις που δεν περιέχουν τεκμηρίωση εκλαμβάνονται ως εσωτερικές.
@include 	 Αρχεία #include που εμφανίζονται στη συνοπτική παρουσίαση των ενοτήτων (λίστα αρχείων που χωρίζονται με κόμματα), αντικαθιστώντας την καθολική τιμή στο αρχείο ενότητας ή στη γραμμή εντολών. Πρόκειται για προαιρετικό στοιχείο.
@image 	 Η εικόνα που θα εμφανίζεται στο πάνω μέρος της σελίδας αναφοράς για αυτή την ενότητα. Αυτή συχνά θα είναι κάποιου είδους διάγραμμα για την απεικόνιση μια κλάσης ή ενός διαγράμματος της σχέσης της με άλλες κλάσεις. Αυτή η καταχώρηση είναι προαιρετική.
Για να μη χρειαστεί να κάνετε εκ νέου μεταγλώττιση μετά από αλλαγές στην τεκμηρίωση, σας προτείνουμε να ενσωματώνετε την τεκμηρίωση των ενοτήτων στο αρχείο του πηγαίου κώδικα, όπου αυτό είναι δυνατό.

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

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

Εκδόσεις Ετικετών
Από: 	 Περιγραφή οπό ποια έκδοση του κώδικα και μετά είναι διαθέσιμο το API.
Παρωχημένη: 	 Παράγραφος που επισημαίνει ότι θα πρέπει να σταματήσει η χρήση της συνάρτησης. Η περιγραφή θα πρέπει να παραπέμπει τον αναγνώστη στο νέο API.
Μπορείτε επίσης να προσθέσετε πληροφορίες σταθερότητας σε όλα τα στοιχεία της τεκμηρίωσης για να δείξετε αν η σταθερότητα API είναι εγγυημένη για αυτά για όλες τις μελλοντικές δευτερεύουσες εκδόσεις του έργου.
Το επίπεδο προεπιλεγμένης σταθερότητας για όλα τα στοιχεία τεκμηρίωσης μπορούν να οριστούν μεταφέροντας το όρισμα --default-stability στην gtkdoc-mkdb με μια άπω τις παρακάτω τιμές.

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

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

/**
 * foo_get_bar:
 * @foo: some foo
 *
 * Retrieves @foo's bar.
 *
 * Returns: @foo's bar
 *
 * Since: 2.6
 * Deprecated: 2.12: Use foo_baz_get_bar() instead.
 */
Bar *
foo_get_bar(Foo *foo)
{
...

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

Σχόλια

/**
 * foo_get_bar: (σχόλιο)
 * @foo: (σχόλιο): some foo
 *
 * Ανακτά @foo's bar.
 *
 * Επιστρέφει: (σχόλιο): @foo's bar
 */
...
/**
 * foo_set_bar_using_the_frobnicator: (σχόλιο) (ένα άλλο σχόλιο)
 *                                    (και ένα άλλο σχόλιο)
 * @foo: (σχόλιο) (ένα άλλο σχόλιο): some foo
 *
 * Ορίζει γραμμή στο @foo.
 */

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

Ομάδα σχολίων συνάρτησης

/**
 * 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.
 */

Ετικέτες συναρτήσεων
Επιστροφές: 	 Παράγραφος που περιγράφει το επιστρεφόμενο αποτέλεσμα.
@...: 	 Σε περίπτωση που η συνάρτηση μπορεί να δεχθεί μεταβλητό αριθμό ορισμάτων (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[FOOBARIZED] =
  g_signal_new ("foobarized",
                ...

Ομάδα σχολίων δομής

Ομάδα σχολίων δομής

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

  gboolean bar;
} FooWidget;

Χρησιμοποιήστε το /*< private >*/ πριν από πεδία ιδιωτικών δομών που θέλετε να αποκρύψετε. Χρησιμοποιήστε το /*< public >*/για την αντίστροφη συμπεριφορά.
Αν το πρώτο πεδίο είναι "g_iface", "parent_instance" ή "parent_class" θα θεωρηθεί αυτόματα ιδιωτικό και δεν θα χρειαστεί να αναφερθεί στην περιοχή των σχολίων.
Οι ομάδες σχολίων μιας δομής μπορούν επίσης να χρησιμοποιηθούν για GObjects και για GObjectClasses. Είναι συνήθως καλή ιδέα να προσθέτετε μία ομάδα σχολίου για μια κλάση, εάν έχει vmethods (γιατί έτσι μπορούν να τεκμηριωθούν). Για το ίδιο το GObject μπορείτε να χρησιμοποιήσετε τα σχετικά έγγραφα τμημάτων, έχοντας μία ξεχωριστή ομάδα για το στιγμιότυπο δομής θα ήταν χρήσιμο εάν το στιγμιότυπο έχει δημόσια πεδία. Ένα μειονέκτημα εδώ είναι ότι θα δημιουργηθούν δύο καταχωρήσεις δεικτών για το ίδιο όνομα (για την δομή και για το τμήμα).

Ομάδα σχολίων Enum

Ομάδα σχολίων Enum

/**
 * Something:
 * @SOMETHING_FOO: something foo
 * @SOMETHING_BAR: something bar
 *
 * Enum values used for the thing, to specify the thing.
 */
typedef enum {
  SOMETHING_FOO,
  SOMETHING_BAR,
  /*< private >*/
  SOMETHING_COUNT
} Something;

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

Inline program documentation
You can document programs and their commandline interface using inline documentation.

Tags
PROGRAM 	 Defines the start of a program documentation.
@short_description: 	 Defines a short description of the program. (Optional)
@synopsis: 	 Defines the arguments, or list of arguments that the program can take. (Optional)
@see_also: 	 See Also manual page section. (Optional)
@arg: 	 Argument(s) passed to the program and their description. (Optional)
Description: 	 A longer description of the program.
Επιστροφές: 	 Specificy what value(s) the program returns. (Optional)

Example of program documentation.

Program documentation block

/**
 * PROGRAM:test-program
 * @short_description: A test program
 * @synopsis: test-program [*OPTIONS*...] --arg1 *arg* *FILE*
 * @see_also: test(1)
 * @--arg1 *arg*: set arg1 to *arg*
 * @--arg2 *arg*: set arg2 to *arg*
 * @-v, --version: Print the version number
 * @-h, --help: Print the help message
 *
 * Long description of program.
 *
 * Returns: Zero on success, non-zero on failure
 */
int main(int argc, char *argv[])
{
	return 0;
}

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

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

Ο προορισμός είναι το αναγνωριστικό του 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>