A∩B: η ιστορία ενός βέννειου διαγράμματος

6 10 2012

Στη μικρή δημοσκόπηση που ανάρτησα εδώ και δύο περίπου μήνες στη δεξιά στήλη του blog, βλέπω ότι η πλειοψηφία των αναγνωστών γράφει μαθηματικά στο MathType (περίπου το 50% των ανθρώπων που ψήφισαν), γεγονός που είναι απόλυτα αναμενόμενο. Το \LaTeX έρχεται δεύτερο σε προτίμηση, με ποσοστό λίγο μικρότερο από 25%. Ομολογώ πως δεν περίμενα τέτοιο αποτέλεσμα. Πίστευα πραγματικά πως οι χρήστες του \LaTeX θα ήταν λιγότεροι. Αφού λοιπόν η πλειοψηφία των αναγνωστών γράφουν μαθηματικά με ένα λογισμικό που είναι πολύ εύκολο να σου τα «θαλασσώσει», ενώ παράλληλα υπάρχει μια σημαντική μερίδα ανθρώπων που χρησιμοποιούν \LaTeX (το καλύτερο «λογισμικό»[1] που υπάρχει αυτή τη στιγμή για να γράψει κανείς μαθηματικό κείμενο), σκέφτηκα ότι θα μπορούσαν να φανούν χρήσιμα μερικά άρθρα σχετικά με τις εξερευνήσεις μου στη χώρα του \LaTeX. Αυτό λοιπόν θα είναι το πρώτο από μία σειρά άρθρων πάνω σε θέματα που με απασχολούν κατά καιρούς, ενόσω γράφω τις σημειώσεις μου.

Τα διαγράμματα Venn σε κάτι παλιά βιβλία πιθανοτήτων που διάβαζα στο πανεπιστήμιο αποκαλούνταν βέννεια διαγράμματα (ήταν γραμμένα στην καθαρεύουσα βλέπετε). Αυτή η έκφραση έχει έκτοτε χαραχτεί στο μυαλό μου. Τώρα πια όποτε βλέπω ένα διάγραμμα Venn, θυμάμαι πάντα τα βέννεια διαγράμματα. Τις προάλλες διάβασα ένα άρθρο στο blog Μαθηματικές πτήσεις σχετικά με τα διαγράμματα Venn, ενώ την ίδια ημέρα πάσχιζα να αποτυπώσω το βέννειο διάγραμμα της τομής δύο συνόλων σε κείμενο γραμμένο σε \LaTeX. Σκέφτηκα λοιπόν να γράψω σήμερα γι’ αυτό το θέμα ακριβώς. Πώς μπορεί λοιπόν κανείς να σχεδιάσει την τομή δύο συνόλων με ένα διάγραμμα Venn σε \LaTeX;

Προεργασία στη GeoGebra

Ανοίξτε τη GeoGebra και σχεδιάστε το διάγραμμα Venn.

  1. Εμφανίστε το πλέγμα στην περιοχή σχεδίασης.
  2. Με τη χρήση του εργαλείου «πολύγωνο» σχεδιάστε ένα ορθογώνιο με οδηγό το πλέγμα. Επιλέξτε την απόκρυψη των κορυφών. Δώστε το χρώμα που θέλετε στο τετράπλευρο, αλλά δώστε τιμή 0 στην Αδιαφάνεια (δεξί κλικ στο ορθογώνιο → Ιδιότητες… → Στυλ →Αδιαφάνεια).
  3. Με το εργαλείο «έλλειψη» σχεδιάστε τα δύο σύνολα. Επιλέξτε την απόκρυψη των εστιών και των σημείων των ελλείψεων.
  4. Με το εργαλείο «εισαγωγή κειμένου» δώστε ονόματα στα σύνολά σας.

Προς το παρόν δε χρειάζεται να σας απασχολεί το μέρος που θέλετε να γραμμοσκιάσετε. Έχετε επίσης υπόψην σας ότι κάθε μονάδα μέτρησης μήκους θα αποτυπωθεί αργότερα στο κείμενό σας σε πραγματικό μήκος 1cm, οπότε καλό είναι να έχετε κατά νου τις αναλογίες. Βέβαια αυτό αργότερα μπορεί να αλλάξει πολύ εύκολα, πειράζοντας μονάχα μια εντολή, αλλά προς το παρόν δε θα ασχοληθούμε με κάτι τέτοιο.

Σύρετε με αριστερό κλικ ένα ορθογώνιο πλαίσιο γύρω από το σχήμα σας. Ό,τι πλαισιωθεί τώρα θα εξαχθεί αργότερα στο κείμενο. Ζητήστε από τη GeoGebra να δημιουργήσει τον κώδικα PsTricks του σχήματός σας ακολουθώντας τη διαδρομή Αρχείο → Εξαγωγή → Προβολή γραφικών ως PsTricks. Στο παράθυρο που θα ανοίξει η GeoGebra επιλέξτε Δημιουργία κώδικα PsTricks. Αφήστε το παράθυρο ανοιχτό για αργότερα. Η GeoGebra παράγει ένα MWE (Minimal Working Example), το οποίο δε θα χρειαστείτε ολόκληρο.

Το κυρίως μέρος στο LyX

Ανοίξτε το LyX και φορτώστε το πακέτο PsTricks στο έγγραφό σας ακολουθώντας τη διαδρομή Έγγραφο → Ρυθμίσεις… → Προεπεξεργασία LaTeX και προσθέστε στο preamble του κειμένου σας την εντολή  \usepackage{pstricks-add}

Οι τέσσερις πρώτες γραμμές του κώδικα που παρήγαγε η GeoGebra είναι το preamble του MWE, οπότε δε χρειάζεται να τις αντιγράψετε αν δουλεύετε στο LyX, ούτε βέβαια και την τελευταία. Αντιγράψτε το υπόλοιπο κομμάτι του κώδικα, μέχρι και την εντολή \end{pspicture*}. Πρέπει να έχετε κάτι που να μοιάζει με τον παρακάτω κώδικα

\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25}
\begin{pspicture*}(-0.14,0.82)(3.16,3.26)
\psline(0,3)(3,3)
\psline(3,3)(3,1)
\psline(3,1)(0,1)
\psline(0,1)(0,3)
\rput{73.89}(1.07,2.11){\psellipse(0,0)(0.75,0.58)}
\rput{75.96}(1.87,2.04){\psellipse(0,0)(0.75,0.65)}
\rput[tl](2.62,1.54){$ \Omega $}
\rput[tl](0.26,2.98){$ \mathrm{A} $}
\rput[tl](2.38,3.06){$ \mathrm{B} $}
\end{pspicture*}

Επιλέξτε στο LyX το εργαλείο Εισαγωγή κώδικα TeX και στο κόκκινο ορθογώνιο που θα εμφανιστεί το κείμενό σας επικολλήστε τον κώδικα. Ήρθε η ώρα να πειράξουμε λιγάκι τον κώδικα, ώστε να σκιαστεί το κομμάτι του γραφικού που αντιστοιχεί στην τομή των δύο συνόλων. Αυτή τη δουλειά θα την κάνουμε με την εντολή \psclip. Αντιγράψτε τις γραμμές 07 και 08 του κώδικα, οι οποίες σχεδιάζουν τις δύο ελλείψεις. Εισάγετε πριν  τη γραμμή 07 τις εντολές:

\psclip{
 \rput{81.12}(0.76,0.56){\psellipse[linestyle=none](0,0)(.75,0.58)}
 \rput{75.76}(2.09,0.51){\psellipse[linestyle=none](0,0)(0.75,0.65)}
}
\psframe*[linecolor=lightgray](-0.14,0.82)(3.16,3.26)
\endpsclip

Η \psclip δίνει το κομμάτι που αντιστοιχεί στην τομή των γραμμών που βρίσκονται μέσα στις αγκύλες της. Παρατηρήστε ότι στις δύο ελλείψεις μέσα στην \psclip κάναμε μια μικρή αλλαγή, προσθέσαμε την επιλογή [linestyle=none] για να μην εμφανιστεί δύο φορές το περίγραμμα της τομής. Τις ελλείψεις θα τις σχεδιάσουμε ξανά αργότερα (γραμμές 07 και 08 του «παλιού» κώδικα). Αμέσως μετά δώσαμε την εντολή \psframe* για να δηλώσουμε το επιθυμητό χρώμα της τομής. Η εντολή αυτή ουσιαστικά δημιουργεί ένα γκρι πλαίσιο που καλύπτει ολόκληρη την εικόνα (προσέξτε ότι οι συντεταγμένες που την ακολουθούν καλύπτουν εξολοκλήρου την εικόνα), εφόσον όμως ακολουθεί την \psclip{έλλειψη1, έλλειψη2}, μόνο το κομμάτι της τομής εμφανίζεται τελικά, δίνοντάς του γκρι χρώμα.  Η τελική μορφή του κώδικα είναι η παρακάτω:

\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25}
\begin{pspicture*}(-0.14,0.82)(3.16,3.26)
\psline(0,3)(3,3)
\psline(3,3)(3,1)
\psline(3,1)(0,1)
\psline(0,1)(0,3)
\psclip{
 \rput{81.12}(0.76,0.56){\psellipse[linestyle=none](0,0)(.75,0.58)}
 \rput{75.76}(2.09,0.51){\psellipse[linestyle=none](0,0)(0.75,0.65)}
}
\psframe*[linecolor=lightgray](-1.1,-1.12)(4.12,2.08)
\endpsclip
\rput{73.89}(1.07,2.11){\psellipse(0,0)(0.75,0.58)} 
\rput{75.96}(1.87,2.04){\psellipse(0,0)(0.75,0.65)} 
\rput[tl](2.62,1.54){$ \Omega $} 
\rput[tl](0.26,2.98){$ \mathrm{A} $} 
\rput[tl](2.38,3.06){$ \mathrm{B} $} 
\end{pspicture*}

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

Αν θέλετε να αλλάξετε τις διαστάσεις της εικόνας σας, μπορείτε να το κάνετε διαφοροποιώντας τις μονάδες μέτρησης στους άξονες x και y στη γραμμή 00 του κώδικα. Αυτό γίνεται ορίζοντας άλλες τιμές για τις παραμέτρους xunit και yunit.

Σημειώστε ότι για να εξάγετε το κείμενό σας σε pdf είναι αναγκαίο να χρησιμοποιήσετε το μετατροπέα ps2pdf, καθώς κανένας άλλος δεν μπορεί να διαχειριστεί σωστά τα σχήματα που δημιουργούνται με το PsTricks.

Σημειώσεις

[1] Το \LaTeX, που αρχικά σχεδιάστηκε από τον Leslie Lamport,  δεν είναι ουσιαστικά λογισμικό, αλλά μια γλώσσα για το \TeX. Το \TeX είναι ένα σύστημα στοιχειοθεσίας που σχεδιάστηκε από τον Donald Knuth και κυκλοφόρησε το 1978, με σκοπό:

  1. να δώσει τη δυνατότητα στον καθένα να γράψει βιβλία υψηλής αισθητικής και
  2. να κατασκευάσει ένα σύστημα που θα έδινε ακριβώς τα ίδια αποτελέσματα σε οποιονδήποτε υπολογιστή.
Advertisements

Ενέργειες

Information

Ποιες είναι οι σκέψεις σας;

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s




Αρέσει σε %d bloggers: