#!/usr/bin/perl -s use strict; use Data::Dumper; use Exercise::Gen; use Skel::Data; use Text::RewriteRules; skimport(); my $r={}; my $f=shift or die; my $text=`cat $f`; print Dumper(gexerfile($text)); RULES/m gexerfile =begin=> my $r={}; $_ .= "\cZ" \#[Qq]uest:\s*(\S+)=e=> push(@{$r->{q}},$1); "" \n[Tt]itle:\s*(.+)=e=>$r->{title}=$1;"" \n[Vv]ertions:\s*(.+)=e=>$r->{versions}=$1;"" \n(\w+):\s*(.+)=e=>$r->{$1}=$2;"" \cZ=last=> !! return $r ENDRULES __END__ exit 0; my $e=Exercise::Gen::read_enun($f); if($pdf1){ Exercise::Gen::proc_geral($e); my $en = Exercise::Gen::latex(); my $en2 = Exercise::Gen::vals(); $en->{tab}=sub{my $r=""; for(@{$en->{_ordem}}){ next if $_ eq "tab"; $r.= sprintf("%5s | %20s | %s\n",$_,$en->{$_},$en2->{$_}) unless /^_/}; $r}; open (F,">","_.tex") or die;; print F LAT($en); close F; system("ppdflatex _.tex")== 0 or die("Error in ppdflatex\n"); system("xpdf _.pdf") == 0 or die("Error no PDF found\n"); } if($n){ for(1..$n){ Exercise::Gen::proc_geral($e); my $en = Exercise::Gen::latex(); print ENU($en),"\n\%---------------\n"; } } else { Exercise::Gen::proc_geral($e); my $en = Exercise::Gen::vals(); print Dumper $en } sub enu{ my $a=shift; ENU($a); } __DATA__ __ENU__ \section{Enunciado} [% _enunciado %] __SUG__ \section{Sugestão} [% _sugestao %] __RES__ __LAT__ \documentclass[portuges,a4paper]{article} \usepackage{babel} %\usepackage{ucs} \usepackage[mathletters]{ucs} \usepackage[utf8x]{inputenc} \usepackage[T1]{fontenc} %\usepackage[latin1]{inputenc} \usepackage{graphicx} %\usepackage{fancyvrb} %\usepackage{t1enc} \begin{document} \title{[% _title %]} \author{[% _author %]} \date{\today} \maketitle \section{Sorteio} \begin{verbatim} [% tab %] \end{verbatim} \section{Enunciado} [% _enunciado %] \section{Sugestão} [% _sugestao %] \section{Resolução} [% _resolucao %] \section{Solução} [% _solucao %] \end{document} __EXE__ #title: #author: #let: n a =[ ]; a ~ b; #question: \begin{enumerate} \item \end{enumerate} #sugestion: #resolution: #result: #Verify: __GEXER__ template: ~/svn/gexer/Exercise-Gen/example/jj.tskel problems: ~/svn/gexer/ versions: 4 title: Teste Matemática Jun 2011 #quest: EqQua2NV.txt #quest: \begin{questao} Escreva a tabuado dos noves. \end{questao} __TSKEL__ \documentclass[portuges,a4paper]{article} \usepackage{babel} \usepackage[mathletters]{ucs} \usepackage[utf8x]{inputenc} \usepackage[T1]{fontenc} \usepackage{fancyvrb} %\usepackage{t1enc} \usepackage{jjaulas} \usepackage{graphicx} \begin{document} %\fvset{fontsize=\small, frame=single, numberblanklines=false} \begin{exame}{[* title *]}{}{\today} [* questions *] \end{exame} \end{document} __question__ \begin{questao}{} [* q *] \end{questao} __END__ =head1 NAME gexer - Exercise Generator =head1 SYNOPSIS gexer -h -- exercise template gexer -pdf1 problem.txt gexer -pdf1 test.gexer =head1 DESCRIPTION =head2 EXPORT =head1 AUTHOR J.Joao Almeida, jj@di.uminho.pt =head1 SEE ALSO perl(1). =cut