246 γραμμές
20 KiB
Markdown
246 γραμμές
20 KiB
Markdown
|
+++
|
|||
|
title = 'LinuxDoc'
|
|||
|
date = '2000-01-01T00:00:00Z'
|
|||
|
description = ''
|
|||
|
author = 'DJ Art(mailto:djart@hellug.gr)'
|
|||
|
issue = ['Magaz 21']
|
|||
|
issue_weight = 5
|
|||
|
+++
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
*Το άρθρο αυτό έχει σκοπό να σας παρουσιάσει τον κόσμο της γλώσσας SGML, και μάλιστα τον τύπο εγγράφου linuxdoc, ο οποίος είναι ευρύτατα διαδεδομένος για τη
|
|||
|
συγγραφή How-Tos, FAQs και διαφόρων άλλων βοηθητικών εγγράφων γύρω από το Linux.*
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
**1. Εισαγωγή**
|
|||
|
------------------------------------------
|
|||
|
|
|||
|
**2. Ο τύπος Linuxdoc**
|
|||
|
--------------------------------------------------
|
|||
|
|
|||
|
**3. Το πρώτο σας έγγραφο**
|
|||
|
------------------------------------------------------
|
|||
|
|
|||
|
- [3.1 Basic structure (Βασική Δομή)](#ss3.1)
|
|||
|
- [3.2 Κεφάλαια και ενότητες](#ss3.2)
|
|||
|
- [3.3 Μορφοποίηση του κειμένου](#ss3.3)
|
|||
|
- [3.4 Ειδικοί χαρακτήρες](#ss3.4)
|
|||
|
- [3.5 Εσωτερικά links](#ss3.5)
|
|||
|
- [3.6 Web links](#ss3.6)
|
|||
|
- [3.7 Εισαγωγή εικόνων](#ss3.7)
|
|||
|
|
|||
|
**4. SGML Tools**
|
|||
|
--------------------------------------------
|
|||
|
|
|||
|
- [4.1 Ελέγχοντας το έγγραφό σας](#ss4.1)
|
|||
|
- [4.2 Δημιουργώντας plain text](#ss4.2)
|
|||
|
- [4.3 Δημιουργώντας LaTex](#ss4.3)
|
|||
|
- [4.4 Δημιουργώντας HTML](#ss4.4)
|
|||
|
- [4.5 Δημιουργώντας RTF](#ss4.5)
|
|||
|
|
|||
|
**5. Επίλογος**
|
|||
|
------------------------------------------
|
|||
|
|
|||
|
- [5.1 Πηγές](#ss5.1)
|
|||
|
- [5.2 Κατάργηση του LinuxDoc](#ss5.2)
|
|||
|
|
|||
|
|
|||
|
### [1. Εισαγωγή]{#s1}
|
|||
|
|
|||
|
Τα αρχικά SGML σημαίνουν Standard Generalised Mark-up Language. Η SGML, λοιπόν, είναι μια γλώσσα προσδιορισμού τύπων εγγράφων. Μπορείτε να φανταστείτε την SGML
|
|||
|
σαν ένα υπερσύνολο, και, για να σας δώσω ένα παράδειγμα, η HTML είναι ένα υποσύνολο της SGML. Η SGML επινοήθηκε από την IBM προκειμένου να λυθεί το πρόβλημα της
|
|||
|
μη τυποποποιημένης εμφάνισης κειμένων σε διάφορα υπολογιστικά συστήματα.
|
|||
|
|
|||
|
Ας δούμε ένα άλλο παράδειγμα: Κάποιος μπορεί να ορίσει τον τύπο ενός εγγράφου ως συνταγή. Το έγγραφο θα περιέχει ένα πρώτο μέρος, όπου θα παρουσιάζονται τα
|
|||
|
υλικά. Στο δεύτερο μέρος θα γίνεται μια εισαγωγή για τα σκεύη και ότι άλλο χρειαστεί στην όλη διαδικασία. Στο τρίτο μέρος, τελικά, θα περιγράφονται τα βήματα
|
|||
|
που χρειάζονται για να μαγειρέψουμε το αντικείμενό μας, και, τέλος μια ολοκληρωμένη εικόνα του τί κάναμε, για να δοθεί μια σφαιρική άποψη της πράξης μας.
|
|||
|
|
|||
|
Όλο αυτό ονομάζεται \"Ορισμός του τύπου του εγγράφου\" (Document Type Definition). Δεν περιγράφει το πως θα μοιάζει το τελικό έγγραφο, αλλά το τί μπορεί να
|
|||
|
περιέχει. Με αυτόν τον τρόπο, γράφει κανείς το έγγραφό του χωρίς να λογαριάζει την τελική του εμφάνιση, την εμφάνιση που θα δεί ο αναγνώστης.
|
|||
|
|
|||
|
|
|||
|
### [2. Ο τύπος Linuxdoc]{#s2}
|
|||
|
|
|||
|
Όπως θα καταλάβατε από το όνομά του, το Linuxdoc είναι ο τύπος που χρησιμοποιούμε για να γράψουμε έγγραφα στο/γύρω από/σχετικά με το Linux (ναι, όλα αυτά).
|
|||
|
Αυτός ο τύπος εγγράφων γράφεται ως εξής: Αρχίζουμε με τον τίτλο, ακολουθούμενο από το όνομα του συγγραφέα, την έκδοση και την ημερομηνία. Μετά ακολουθεί το
|
|||
|
abstract, δηλαδή μια σύντομη περιγραφή, ώστε να μην χρειαστεί να ανατρέξετε στα περιεχόμενα για να δείτε το θέμα του εγγράφου, αλλά να σας υποδηλώσει το
|
|||
|
αντικείμενο, με το οποίο ασχολείται ο συγγραφέας. Έπειτα, ακολουθούν τα περιεχόμενα, που δείχνουν το περιεχόμενο του εγγράφου, ώστε οι \"γρήγοροι\" να πάνε
|
|||
|
κατ\' ευθείαν στο θέμα που τους ενδιαφέρει. Στη συνέχεια, έχουμε μια λίστα από κεφάλαια, παραγράφους και ενότητες (chapters, paragraphs, sections).
|
|||
|
|
|||
|
Ανάμεσα σε όλα αυτά, μπορεί κανείς να προσθέτει ότι θέλει: κείμενο, κομμάτια από κώδικα προγραμμάτων, να αλλάζει το font για να τονίζει κάποιες φράσεις, να
|
|||
|
χρησιμοποιεί λίστες, να αναφέρεται και να παραπέμπει σε άλλα τμήματα του κειμένου, κτλ\...
|
|||
|
|
|||
|
Τα tags και τα ειδικά εργαλεία που θα δούμε παρακάτω, στο σύνολό τους, αυτό είναι που ονομάζουμε γλώσσα markup: ένας τρόπος πληροφοριακής και περιγραφικής
|
|||
|
σύνταξης ενός εγγράφου με τέτοιο τρόπο, ώστε να είναι χρήσιμος σε διάφορα προγράμματα. Η HTML, το Tex και τα man pages του Unix είναι κι αυτά γνωστά
|
|||
|
παραδείγματα από γλώσσες markup.
|
|||
|
|
|||
|
H SGML, από μόνη της δεν περιγράφει μια γλώσσα markup, αλλά μια γλώσσα, με την οποία μπορεί κανείς να συγγράψει προσδιορισμούς για άλλες γλώσσες markup. Στη
|
|||
|
\"διάλεκτο\" της SGML ο markup προσδιορισμός ονομάζεται DTD (Document Type Definition). To DTD σας επιτρέπει να ορίσετε τη δομή ενός είδους εγγράφου, δηλαδή,
|
|||
|
ποιά μέρη θα έχει, και σε ποιά σειρά, ένα έγγραφο. Όταν ορίζετε DTD σε ένα έγγραφό σας, τότε ένας SGML \"σαρωτής\" μπορεί να ελέγξει αν το έγγραφό σας είναι
|
|||
|
σωστά γραμμένο. Επιπλέον, με τη χρήση του συνδυασμού ενός SGML \"σαρωτή\" και ενός συγκεκριμένου DTD, μπορεί κανείς να δημιουργήσει ένα πρόγραμμα που να
|
|||
|
μεταφράζει το έγγραφο, από μια markup γλώσσα σε μια άλλη.
|
|||
|
|
|||
|
|
|||
|
### [3. Το πρώτο σας έγγραφο]{#s3}
|
|||
|
|
|||
|
### [3.1 Basic structure (Βασική Δομή)]{#ss3.1}
|
|||
|
|
|||
|
Αρχίζοντας, πρέπει να προσθέσετε τις παρακάτω γραμμές στην αρχή του εγγράφου σας: \<!doctype linuxdoc system\>\
|
|||
|
\<article\>\
|
|||
|
\<title\>Βάλτε εδώ τον τίτλο που θέλετε\</title\>\
|
|||
|
\<author\>\
|
|||
|
Όνομα συγγραφέα, το e-mail του, κλπ\...\
|
|||
|
\</author\>\
|
|||
|
\<date\>\
|
|||
|
έκδοση και ημερομηνία\
|
|||
|
\</date\>
|
|||
|
|
|||
|
Στη συνέχεια, αν θέλετε να περιγράψετε περιληπτικά το περιεχόμενο του εγγράφου, βάλτε τα tags **\<abstract\>** πρίν την παράγραφο της περίληψης και
|
|||
|
**\</abstract\>** στο τέλος της περίληψης. Μετά από αυτά, βάλτε το tag **\<toc\>** το οποίο σημαίνει Table of Contents (Πίνακας περιεχομένων).
|
|||
|
|
|||
|
### [3.2 Κεφάλαια και ενότητες]{#ss3.2}
|
|||
|
|
|||
|
Κάθε φορά, που θα θέλετε να ξεκινήσετε ένα νέο κεφάλαιο, θα πρέπει να βάζετε, πριν αρχίσετε, το tag **\<sect\>** και δίπλα του να γράφετε τον τίτλο του
|
|||
|
κεφαλαίου. Προσέξτε, σε αυτό το σημείο, πως δεν είναι ανάγκη να αριθμείτε τα κεφάλαιά σας, γιατί αυτό γίνεται αυτόματα από το tag **\<sect\>**. Με τον ίδιο
|
|||
|
ακριβώς τρόπο, μπορείτε να δημιουργήσετε ενότητες μέσα στα κεφάλαια, και μάλιστα ενότητες διαφόρων επιπέδων: Εισάγοντας το tag **\<sect1\>** και μετά από αυτό
|
|||
|
έναν τίτλο, αυτομάτως δημιουργείται μία ενότητα δευτέρου επιπέδου (αριθμημένη κατάλληλα). Η αρίθμησή της έχει 2 μέρη (αφού είναι δευτέρου επιπέδου) και ακολουθή
|
|||
|
την μορφή **Χ.Υ**. **Χ** είναι ο αριθμός του κεφαλαίου, μέσα στον οποίο βρίσκεται η ενότητα, ενώ το **Υ** είναι ο αριθμός της ενότητας. Προσέξτε ότι το **Υ**
|
|||
|
δεν αυξάνεται συνεχώς, αλλά ξαναπέρνει την τιμή 1 όταν φτιάξετε μια ενότητα σε καινούριο κεφάλαιο. Με παρόμοιο τρόπο, λοιπόν, μπορείτε να ορίσετε και ενότητες
|
|||
|
μεγαλύτερου επιπέδου, έως και 5ου, με το tag **\<sectN\>**, όπου το **Ν** πέρνει τις τιμές από 1 μέχρι 4.
|
|||
|
|
|||
|
### [3.3 Μορφοποίηση του κειμένου]{#ss3.3}
|
|||
|
|
|||
|
Για να ορίσετε μια νέα παράγραφο, αρκεί να βάλετε το tag **\<p\>** πρίν αρχίσετε να τη γράφετε. Εάν απλώς θέλετε να αλλάξετε γραμμή (και όχι παράγραφο), τότε
|
|||
|
χρησιμοποιήστε το tag **\<newline\>**. Τα σχόλιά σας, μπορείτε να τα γράφετε ανάμεσα στα tags **\<!\--** και **\--\>**.
|
|||
|
|
|||
|
Όταν θέλετε να δίνετε έμφαση σε κάποια τμήματα του κειμένου σας, τότε μπορείτε να κάνετε τη γραμματοσειρά να φαίνεται είτε ως italics (*πλάγια γράμματα*), είτε
|
|||
|
ως bold (**έντονα γράμματα**). Για να ορίσετε τα italics, αρκεί να \"περικυκλώσετε\" το τμήμα του κειμένου που θέλετε με τα tags **\<it\>** και **\</it\>**, ενώ
|
|||
|
για bold, χρησιμοποιήστε τα tags **\<bf\>** και **\</bf\>** με τον ίδιο ακριβώς τρόπο. Μπορείτε, επίσης, να κάνετε τη γραμματοσειρά σε typewriter style με τα
|
|||
|
tags **\<tt\>** και **\</tt\>**.
|
|||
|
|
|||
|
Η SGML σας δίνει την δυνατότητα να χρησιμοποιήσετε λίστες μέσα στο έγγραφό σας. Για να προσθέσετε μία μη αριθμημένη λίστα (λίστα με κουκίδες), περικυκλώστε την
|
|||
|
λίστα με τα tags **\<itemize\>** και **\</itemize\>**. Ανάμεσα στα δύο αυτά tags, ορίζετε τα στοιχεία της λίστας με το tag **\<item\>**. Δείτε ένα σχετικό
|
|||
|
παράδειγμα:
|
|||
|
|
|||
|
\<itemize\>\
|
|||
|
\<item\>1ο στοιχείο\
|
|||
|
\<item\>2ο στοιχείο\
|
|||
|
\<item\>3ο στοιχείο\
|
|||
|
\</itemize\>
|
|||
|
|
|||
|
Εάν τώρα θέλετε να δημιουργήσετε μια αριθμημένη λίστα, αρκεί να χρησιμοποιήστε τα tags **\<enum\>** και **\</enum\>** αντί των **\<itemize\>** και
|
|||
|
**\</itemize\>**.
|
|||
|
|
|||
|
Αν μέσα στο έγγραφό σας έχετε συμπεριλάβει ένα κομμάτι κώδικα και θέλετε να το κάνετε να ξεχωρίζει από το υπόλοιπο έγγραφο, τότε περικυκλώστε το από τα tags
|
|||
|
**\<verb\>** και **\</verb\>**. Παράδειγμα:
|
|||
|
|
|||
|
<verb>
|
|||
|
#include <iostream.h>
|
|||
|
|
|||
|
void main()
|
|||
|
{
|
|||
|
cout << "Hello World !!" << endl;
|
|||
|
}
|
|||
|
</verb>
|
|||
|
|
|||
|
### [3.4 Ειδικοί χαρακτήρες]{#ss3.4}
|
|||
|
|
|||
|
Μάλλον, μέχρι τώρα, θα έχετε καταλάβει ότι αν θέλετε να χρησιμοποιήσετε τους χαρακτήρες **\<** και **\>** δεν μπορείτε, γιατί χρησιμοποιούνται από την SGML,
|
|||
|
ώστε να υποδηλώνουν την παρουσία ενός tag. Μην ανησυχείτε, υπάρχει λύση σ\' αυτό το πρόβλημα. Έχετε την δυνατότητα να παραστήσετε τους χαρακτήρες αυτούς (αλλά
|
|||
|
και άλλους όπως θα δούμε στη συνέχεια), χρησιμοποιώντας ειδικούς κώδικες (όπως άλλωστε και στην HTML).
|
|||
|
|
|||
|
Παρακάτω, θα αναφέρω σε μιά λίστα μερικούς από τους κωδικούς για τους ειδικούς χαρακτήρες. Βέβαια, υπάρχουν περισσότεροι ειδικοί χαρακτήρες από αυτούς, τους
|
|||
|
οποίους μπορείτε να βρείτε στο Guide των Sgml-Tools.
|
|||
|
|
|||
|
Χρησιμοποιείστε τον κωδικό & για το σύμβολο (&)
|
|||
|
|
|||
|
Χρησιμοποιείστε τον κωδικό < για το σύμβολο (\<)
|
|||
|
|
|||
|
Χρησιμοποιείστε τον κωδικό > για το σύμβολο (\>)
|
|||
|
|
|||
|
Χρησιμοποιείστε τον κωδικό &etago; για το σύμβολο (\</)
|
|||
|
|
|||
|
Χρησιμοποιείστε τον κωδικό # για το σύμβολο (\#)
|
|||
|
|
|||
|
Χρησιμοποιείστε τον κωδικό $ για το σύμβολο (\$)
|
|||
|
|
|||
|
Χρησιμοποιείστε τον κωδικό % για το σύμβολο (%)
|
|||
|
|
|||
|
Χρησιμοποιείστε τον κωδικό ˜ για το σύμβολο (\~)
|
|||
|
|
|||
|
Χρησιμοποιείστε τον κωδικό © για το σύμβολο (©)
|
|||
|
|
|||
|
Χρησιμοποιείστε τον κωδικό ® για το σύμβολο (
|
|||
|
|
|||
|
### [4. SGML Tools]{#s4}
|
|||
|
|
|||
|
Τα SGML-Tools αναλαμβάνουν να μετατρέψουν το έγγραφό σας στην τελική του μορφή, την μορφή που εσείς θέλετε. Αν το θέλετε για εκτύπωση ή για απλή αποθήκευση,
|
|||
|
μπορείτε να το μετατρέψετε σε Postscript. Αν θέλετε να το εκδόσετε στον \"κόσμο\" μέσω του Internet, θα το μετατρέψετε σε HTML. Αν θέλετε να το διαβάσετε με
|
|||
|
οποιονδήποτε επεξεργαστή κειμένου στα Windows, θα το κάνετε RTF (rich text format).
|
|||
|
|
|||
|
Η ηλεκτρονική διεύθυνση των SGML-Tools είναι: <http://www.sgmltools.org>
|
|||
|
|
|||
|
### [4.1 Ελέγχοντας το έγγραφό σας]{#ss4.1}
|
|||
|
|
|||
|
Τα SGML-Tools σας παρέχουν τη δυνατότητα να ελέγξετε αν συγγράψατε σωστά το έγγραφό σας, πρίν το μετρατρέψετε στην επιθυμητή μορφη. Για να το κάνετε αυτό, αρκεί
|
|||
|
να εκτελέσετε την ακόλουθη εντολή:
|
|||
|
|
|||
|
$ sgmlcheck έγγραφο.sgml
|
|||
|
|
|||
|
Αν σας επιστραφούν μηνύματα error, τότε σημαίνει πως έχετε κάνει κάποια λάθη. Αν δεν σας επιστρέψει κανένα μήνυμα, τότε το έγγραφό σας είναι ολόσωστο.
|
|||
|
|
|||
|
### [4.2 Δημιουργώντας plain text]{#ss4.2}
|
|||
|
|
|||
|
Για να μετατρέψετε ένα sgml έγγραφο σε απλό text κείμενο, αρκεί να εκτελέσετε:
|
|||
|
|
|||
|
$ sgml2txt έγγραφο.sgml
|
|||
|
|
|||
|
Αν τώρα θέλετε το έγγραφό σας να το μετατρέψετε σε μορφή groff για να το χρησιμοποιήσετε σαν man page, τότε εκτελέστε:
|
|||
|
|
|||
|
$ sgml2txt --man έγγραφο.sgml
|
|||
|
|
|||
|
### [4.3 Δημιουργώντας LaTex]{#ss4.3}
|
|||
|
|
|||
|
Παρακάτω, ακολουθούν οι εντολές που μπορείτε να εκτελέσετε, για να μετατρέψετε το έγγραφό σας σε LaTex, Postscript και DVI, αντίστοιχα:
|
|||
|
|
|||
|
$ sgml2latex έγγραφο.sgml
|
|||
|
$ sgml2latex --output=ps έγγραφο.sgml
|
|||
|
$ sgml2latex --output=dvi έγγραφο.sgml
|
|||
|
|
|||
|
### [4.4 Δημιουργώντας HTML]{#ss4.4}
|
|||
|
|
|||
|
Η εντολή για να μετατρέψετε το έγγραφό σας σε HTML είναι:
|
|||
|
|
|||
|
$ sgml2html έγγραφο.sgml
|
|||
|
|
|||
|
Μπορείτε, όμως να χρησιμοποιήσετε και την παρακάτω εντολή:
|
|||
|
|
|||
|
$ sgml2html --imagebuttons έγγραφο.sgml
|
|||
|
|
|||
|
Η παραπάνω εντολή αντικαθιστά τα \"Next\", \"Previous\" και \"Contents\" που περιέχουν οι σελίδες HTML (για να προχωρήσει ο αναγνώστης στις σελίδες
|
|||
|
έγγραφο-1.html κλπ. ανάλογα με τα κεφάλαια του εγγράφου) με βελάκια. Τα βελάκια, έπειτα θα είναι τα αρχεία \"next.gif\", \"prev.gif\", και \"toc.gif\".
|
|||
|
|
|||
|
### [4.5 Δημιουργώντας RTF]{#ss4.5}
|
|||
|
|
|||
|
Η αντίστοιχη εντολή σ\' αυτήν την περίπτωση είναι:
|
|||
|
|
|||
|
$ sgml2rtf έγγραφο.sgml
|
|||
|
|
|||
|
|
|||
|
### [5. Επίλογος]{#s5}
|
|||
|
|
|||
|
### [5.1 Πηγές]{#ss5.1}
|
|||
|
|
|||
|
Για να συγγράψω αυτό το άρθρο συμβουλεύτηκα το **Guide** των **SGML-Tools**, το **LinuxDoc+Emacs+Ispell HowTo**, καθώς και \... τις πολλές ώρες ενασχόλησής μου
|
|||
|
με τη συγγραφή κειμένων, άρθρων κλπ. σε LinuxDoc.
|
|||
|
|
|||
|
### [5.2 Κατάργηση του LinuxDoc]{#ss5.2}
|
|||
|
|
|||
|
Αν επισκεφτείτε την σελίδα των SGML-Tools, θα διαπιστώσετε, ότι το project για το LinuxDoc έχει σταματήσει, και ότι τα SGML-Tools από την έκδοση 2 και μετά
|
|||
|
υποστηρίζουν το καινούριο DTD, το BookDoc (ενώ για να τα χρησιμοποιήσετε για έγγραφα γραμμένα με LinuxDoc, χρειάζεστε έκδοση 1.χχ.χχ). Τώρα, το κατά πόσο θα
|
|||
|
καταργηθεί τελείως το LinuxDoc, αυτό εξαρτάται από πολλούς παράγοντες, όπως από το γεγονός ότι όλα τα How-To και FAQ για το Linux, είναι γραμμένα σε LinuxDoc.
|
|||
|
Ίσως, τελικά, στα \... πληκτρολόγια των Linuxάδων να μην καταργηθεί ποτέ \...
|
|||
|
|