ThemaGen
Generator of random examination documents based on random categorized topics
Install / Use
/learn @tsadimas/ThemaGenREADME
ThemaGen - ThemaGenerator
Παραδοχές
- Έχετε θέματα οργανωμένα σε κατηγορίες, στις οποίες μπορείτε να ορίσετε πόσες επιλογές θέλετε από κάθε μια κατηγορία, ώστε να επιλεχθούν τυχαία τόσες ερωτήσεις από κάθε θέμα
- Τα θέματά σας μπορείτε να τα μετατρέψετε εύκολα σε markdown μορφή σύμφψνα με το ακόλουθο link
- Αν θέλετε μπορείτε να συμπεριλάβετε εικόνες στα θέματα (δείτε το παράδειγμα
assets/questions/maths/maths_4.md) - Μπορείτε να ετοιμάσετε μια εικόνα όπως η
assets/files/images/ds_-2-20-logo.pngπου να περιλαμβάνει το logo και το όνομα του μαθήματός σας και να ρυθμίσετε το αρχείοthemagen/tests.pyστη μέθοδο_generate_file()ώστε να το συμνπεριλάβει στην αρχή του αρχείου. Δείτε το δείγμα θεμάτων. - Τα θέματα παράγονται σε pdf μορφή με τη βοήθεια του προγράμματος pandoc. Μπορείτε να ρυθμίσετε το font στο αρχείο
themagen/pdf.pyαρκεί να διαθέτετε το font στον υπολογιστή σας. - Τα θέματά σας θα δημιουργηθούν στον κατάλογο
assets/filesκαι δεν θα ανέβουν στο git repo λόγω του.gitignore
Διαδικασία
- Δημιουργία ενός αρχείου με usernames φοιτητών (users.txt)
- Αντιγραφή του
config.yml.exampleσεconfig.yml
cp config.yml.example config.yml
και παραμετροποίησή του σύμφωνα με τις ανάγκες σας. Το αρχέιο config.yml δεν ανεβαίνει στο git repo.
Δημιουργία θεμάτων
- Καθορισμός καταλόγων κάτω από τον κατάλογο questions με τις κατηγορίες των θεμάτων, δώστε ένα κωδικό όνομα για κάθε κατηγορία, π.χ.
arch - Σε κάθε κατηγορία δημιουργήστε με το ίδιο όνομα και κατάληξη
<όνομα_κατηγορίας>_<Αύξων-αριθμός>.md, π.χ.arch_1.md, arch_2.mdκτλ - Για κάθε κατηγορία σημειώστε το πλήθος των ερωτήσεων που θέλετε να επιλεχθούν
- Αντιγράψτε το αρχείο config.yaml.example και ορίστε εκεί τις παραμέτρους που αφορούν τις κατηγορίες, τις ερωτήσεις σε κάθε κατηγορία και το πόσες επιλογές θα γίνουν από αυτές τις ερωτήσεις Παράδειγμα:
# categories
categories:
history:
size: 5
select: 2
maths:
size: 5
select: 2
Στη συνέχεια δημιουργήστε ένα CSV αρχείο που να περιέχει τα usernames των χρηστών ανά γραμμή, π.χ. users.csv, μπορείτε να δείτε ένα παράδειγμα με την εντολή
cat users.csv.example
- Για να δημιουργήσουμε τα θέματα, εκτελούμε το
python3 main.py gentests
Στον κατάλογο files δημιουργήθηκαν τα θέματα σε md. Τα μετατρέπουμε σε pdf με
python3 main.py genpdf
αφού βεβαωθούμε ότι έχουμε τη γραμματοσειρά που αναφέρεται σε αυτό το αρχείο.
- Ρυθμίζουμε τις παραμέτρους mail με τις παραμέτρους σύνδεσης στον mail server και τις παραμέτρους messages για το κείμενο που θα σταλεί με email Τα στέλνουμε με email με
python3 main.py sendmails
Το συγκεκριμένο script ψάχνει τον κατάλογο images και για όσα pdf βρει, σχηματίζει το email με βάση το όνομα του pdf αρχείου και την κατάληξη "@domain.com" και τα στέλνει.
- αν θέλετε μπορείτε να τρέξετε την εντολή
python3 main.py plot <logfilename>
και να έχετε στον κατάλογο assets/samples την κατανομή των θεμάτων.
Προαπαιτούμενα:
- python3
- bash
- pandoc
- xelatex
- NotoSans Nerd Font
Python libraries:
- matplotlib
Δείγματα
Δείγμα θεμάτων σε pdf μορφή
Κατανομή θεμάτων

Related Skills
node-connect
349.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
summarize
349.0kSummarize or extract text/transcripts from URLs, podcasts, and local files (great fallback for “transcribe this YouTube/video”).
feishu-doc
349.0k|
