Magaz, The Greek Linux Magazine
Magaz Logo

Επόμενο  Προηγούμενο  Περιεχόμενα

7. Ένα μεγαλύτερο έγγραφο

Ας δούμε ένα μεγαλύτερο παράδειγμα. Σε ένα νέο αρχείο γράψτε τα παρακάτω.


\input texinfo 
@setfilename sample.info
@settitle A sample manual
@setchapternewpage odd
@titlepage
@title My first Texinfo manual
@subtitle Demo for Magaz
@author Kapelonis Kostis

@comment This is a comment
@page
@vskip 11pt plus 1fill1
Copyright @copyright{} 2002
@end titlepage
@comment name,next,prev,up
@node Top,First Chapter,,(dir)
@menu 
* First Chapter:: The first chapter is the only chapter in this sample
* Concept Index:: This index has two entries
@end menu
@node First Chapter,Concept Index,Top,Top
@chapter First Chapter
@cindex Sample index entry
These are the contents of the first chapter
Here is a simple line of text.
@cindex Another sample index entry
Here is a numbered list
@enumerate
@item
This is the first item
@item 
This is the second item
@end enumerate

@iftex 
This paragraph should
appear only in a printed manual.
It is enclosed inside iftex keywords.
@end iftex

@ifinfo 
This paragraph should
appear only in the info manual.
It is enclosed inside ifinfo keywords.
@end ifinfo

The @command{makeinfo} command will convert this manual
into an info file and @TeX{} to a printed file.
@node Concept Index ,,First Chapter,Top
@unnumbered Concept Index
@printindex cp
@comment Place here table of contents
@contents
@bye

Εδώ βλέπουμε αρκετές @εντολές. Δεν θα τις αναφέρω όλες, για τις λεπτομέρειες δείτε το manual του texinfo. Οι γνώστες του Latex ήδη θα έχουν δει πως το texinfo "καλύπτει" με τις δικές του @εντολές τις αντίστοιχες του Latex.

Το παράδειγμα δείχνει τις εντολές για την δημιουργία indexing, την @menu για την δημιουργία μενού για το browsing μέσα σε Info αρχείου, καθώς και την πολύ σημαντική εντολή @node. H εντολή @vskip υπάρχει για να δείξει ότι δεν έχει χαθεί η ευελιξία που διαθέτει το Tex/Latex.

Ένα node (κόμβος στα ελληνικά) είναι το μικρότερο δομικό στοιχείο ενός info αρχείου. Όταν πατήσατε previous,next και up στο manual του flex, ουσιαστικά μετακινηθήκατε στα αντίστοιχα nodes. Κάθε info αρχείο "κρέμεται" από έναν top node που είναι ο αρχικός κόμβος του αντίστοιχου manual. Όλοι οι top nodes από τα manuals που έχετε στο σύστημα σας "κρέμονται" από έναν top node(supernode) του συνολικού info tree. Αν γράψετε σκέτο info σε ένα τερματικό (χωρίς όνομα manual δηλαδή) βλέπετε αυτόν τον supernode και άρα έχετε μπροστά σας όλα τα manual που έχετε εγκατεστημένα. To ίδιο συμβαίνει και όταν μπαίνετε στο info mode του Emacs.

Πρακτικά αυτό σημαίνει ότι τελικά θα πρέπει να χωρίσετε το κείμενο σας σε nodes. Τα @chapter και @section δεν είναι αυτά που καθορίζουν την δομή του online manual. Όπως είδατε και στην σελίδα της GNU για τον flex ειδικά η html μορφή είναι δυνατόν να κατασκευαστεί με διάφορους τρόπους ανάλογα με τα nodes/chapters. Αυτή είναι και μια μεγάλη διαφορά που ίσως δυσκολέψει όσους "σκέφτονται" σε Latex. (Αναφέρομαι πάντα στο .info output που είναι browsable. Για ps/pdf ισχύουν τα γνωστά, δηλαδή το texinfo είναι ένα πιο φιλικό tex. Αν γράψετε ένα manual και ξέρετε από πριν ότι θα το βγάλετε μόνο σε pdf δεν χρειάζεται να δώσετε σημασία σε @node και @menu).

To @node command συντάσσεται ως εξής:


@node όνομα,όνομα-επόμενου,όνομα-προηγούμενου,όνομα-πατρικού.

Μία από τις πρώτες δυσκολίες που θα συναντήσετε κάθε φορά που γράφετε ένα καινούριο node,είναι να συμπληρώσετε τα παραπάνω ονόματα. Αν γράφετε σε Emacs υπάρχει βέβαια έτοιμη εντολή που απλοποιεί τα πράγματα. Στην αμέσως επόμενη γραμμή βάλτε ένα "συμβατικό" δομικό @command (π.χ. @chapter, @section) για τα outputs se html/ps/pdf.

Τo @menu ορίζει το μενού που θα φαίνεται στην κάτω μεριά του node που βρίσκεται ο χρήστης. Συνήθως περιέχουν pointers σε άλλα nodes του ίδιου manual. Το supernode (μετά από ένα εισαγωγικό κείμενο) δεν είναι παρά ένα μεγάλο μενού με όλα τα manuals του συστήματος. Οι λεπτομέρειες αφήνονται ως άσκηση στον αναγνώστη (Βασικά δεν έχω ασχοληθεί πολύ με μενού ;-)

Τα outputs του παραπάνω αρχείου είναι τα παρακάτω [PDF screenshot] [HTML screenshot] [INFO screenshot]

Επόμενο  Προηγούμενο  Περιεχόμενα


Valid HTML 4.01!   Valid CSS!