dokkit 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/CONTRIBUTORS +0 -0
  2. data/DONE +0 -0
  3. data/LICENSE +20 -0
  4. data/README +0 -0
  5. data/Rakefile +62 -0
  6. data/TODO +0 -0
  7. data/bin/dokkit +53 -0
  8. data/lib/dokkit/app.rb +305 -0
  9. data/lib/dokkit/builtin.rake +55 -0
  10. data/lib/dokkit/deplate/fmt/html-notemplate.rb +21 -0
  11. data/lib/dokkit/deplate/fmt/latex-notemplate.rb +22 -0
  12. data/lib/dokkit/dokkittasks.rb +69 -0
  13. data/lib/dokkit/filters/deplate.rb +37 -0
  14. data/lib/dokkit/filters.rb +26 -0
  15. data/lib/dokkit/page.rb +54 -0
  16. data/lib/dokkit/projects/invoice/README +49 -0
  17. data/lib/dokkit/projects/invoice/Rakefile +100 -0
  18. data/lib/dokkit/projects/invoice/doc/config/company.yaml +12 -0
  19. data/lib/dokkit/projects/invoice/doc/config/customer.yaml +4 -0
  20. data/lib/dokkit/projects/invoice/doc/layouts/invoice.dpltex +90 -0
  21. data/lib/dokkit/projects/invoice/doc/pages/COMMON.rb +12 -0
  22. data/lib/dokkit/projects/invoice/doc/pages/invoice.rb +5 -0
  23. data/lib/dokkit/projects/invoice/doc/pages/invoice.yamltex +16 -0
  24. data/lib/dokkit/projects/invoice/doc/res/tex/deplate.sty +46 -0
  25. data/lib/dokkit/projects/invoice/doc/res/tex/images/logo.eps +209 -0
  26. data/lib/dokkit/projects/invoice/doc/res/tex/include/deplate.sty +46 -0
  27. data/lib/dokkit/projects/invoice/doc/res/tex/include/layout.inc +24 -0
  28. data/lib/dokkit/projects/invoice/doc/res/tex/include/macro.inc +67 -0
  29. data/lib/dokkit/projects/invoice/doc/res/tex/include/packages.inc +51 -0
  30. data/lib/dokkit/projects/invoice/lib/invoice.rb +104 -0
  31. data/lib/dokkit/projects/tech_report/README +49 -0
  32. data/lib/dokkit/projects/tech_report/Rakefile +102 -0
  33. data/lib/dokkit/projects/tech_report/doc/config/company.yaml +13 -0
  34. data/lib/dokkit/projects/tech_report/doc/config/tech_report.yaml +3 -0
  35. data/lib/dokkit/projects/tech_report/doc/layouts/report.dpltex +40 -0
  36. data/lib/dokkit/projects/tech_report/doc/pages/COMMON.rb +12 -0
  37. data/lib/dokkit/projects/tech_report/doc/pages/report.dpltex +37 -0
  38. data/lib/dokkit/projects/tech_report/doc/pages/report.inc +2 -0
  39. data/lib/dokkit/projects/tech_report/doc/pages/report.rb +3 -0
  40. data/lib/dokkit/projects/tech_report/doc/res/attachments/attachment_1 +0 -0
  41. data/lib/dokkit/projects/tech_report/doc/res/attachments/attachment_2 +0 -0
  42. data/lib/dokkit/projects/tech_report/doc/res/tex/images/logo.eps +311 -0
  43. data/lib/dokkit/projects/tech_report/doc/res/tex/include/deplate.sty +46 -0
  44. data/lib/dokkit/projects/tech_report/doc/res/tex/include/layout.inc +24 -0
  45. data/lib/dokkit/projects/tech_report/doc/res/tex/include/macro.inc +67 -0
  46. data/lib/dokkit/projects/tech_report/doc/res/tex/include/packages.inc +48 -0
  47. data/lib/dokkit/projects/tech_report/doc/res/tex/report.bib +4 -0
  48. data/lib/dokkit/projects/tech_report/lib/tech_report.rb +17 -0
  49. data/lib/dokkit/projects/website/README +49 -0
  50. data/lib/dokkit/projects/website/Rakefile +81 -0
  51. data/lib/dokkit/projects/website/doc/layouts/normal.thtml +38 -0
  52. data/lib/dokkit/projects/website/doc/pages/COMMON.rb +9 -0
  53. data/lib/dokkit/projects/website/doc/pages/deplate.dplhtml +9 -0
  54. data/lib/dokkit/projects/website/doc/pages/index.rb +10 -0
  55. data/lib/dokkit/projects/website/doc/pages/index.thtml +12 -0
  56. data/lib/dokkit/projects/website/doc/res/images/rote-tiny.png +0 -0
  57. data/lib/dokkit/projects/website/html/deplate.html +21 -0
  58. data/lib/dokkit/projects/website/html/images/rote-tiny.png +0 -0
  59. data/lib/dokkit/projects/website/html/index.html +37 -0
  60. data/lib/dokkit.rb +71 -0
  61. data/tests/gem_tests.rb +4 -0
  62. data/tests/test_filters.rb +46 -0
  63. metadata +177 -0
@@ -0,0 +1,54 @@
1
+ # Dokkit page class
2
+ # (c)2006 Andrea Fazzi (and contributors)
3
+ #
4
+ # See 'dokkit.rb' or LICENSE for licence information.
5
+
6
+ require 'yaml'
7
+
8
+ module DokkitPage
9
+
10
+ # The base path for config resolution
11
+ attr_reader :config_path
12
+
13
+ def config(fn)
14
+ @config_files << fn if fn
15
+ end
16
+
17
+ def load_configs
18
+ @config_files.each do |fn|
19
+ load_config(fn)
20
+ end
21
+ @config
22
+ end
23
+
24
+ def load_config(fn)
25
+ if fn = config_fn(fn)
26
+ raise "Config #{fn} not found" unless File.exists?(fn)
27
+ Rake.register_dependency(fn)
28
+ @config.update YAML::load( File.open(fn) )
29
+ end
30
+ end
31
+
32
+ def config_fn(fn)
33
+ File.join(config_path,fn) if fn
34
+ end
35
+
36
+ end
37
+
38
+ module Rote
39
+
40
+ class Page
41
+
42
+ include DokkitPage
43
+ alias page_initialize initialize
44
+
45
+ def initialize(template_name, pages_dir = '.', layout_dir = pages_dir, config_dir = pages_dir, &block)
46
+ @config_files = []
47
+ @config = {}
48
+ @config_path = config_dir[STRIP_SLASHES,1]
49
+ page_initialize(template_name, pages_dir, layout_dir, &block)
50
+ @config = load_configs
51
+ end
52
+ end
53
+
54
+ end
@@ -0,0 +1,49 @@
1
+ This is the auto-generated Rote documentation source.
2
+
3
+ To render it using Rote's command-line wrapper (ignoring the included
4
+ Rakefile), type:
5
+
6
+ rote doc
7
+
8
+ from the top-level directory (this one).
9
+
10
+ To render using the included Rakefile (the result is the same in either
11
+ case) type instead:
12
+
13
+ rake doc
14
+
15
+ If you prefer, you can omit the 'doc' task, since it is configured
16
+ as the default.
17
+
18
+ In either case, you should see some output as the pages are rendered
19
+ and resources copied, and get output in a (created) 'html' directory.
20
+ Once you have rendered the site, running the command again will appear
21
+ to do nothing, because only changed resources are re-rendered. To
22
+ start over:
23
+
24
+ (rote|rake) clobber
25
+
26
+ Alternatively, modify the page or resource files, and rerun the first
27
+ command to transform only the modified resource.
28
+
29
+ WHAT NEXT?
30
+
31
+ + See what else you can do by typing:
32
+
33
+ (rote|rake) --tasks
34
+
35
+ rote --usage ( with the command-line wrapper )
36
+
37
+ + Modify the included page template and layout to suit your needs.
38
+
39
+ + Edit the included Rakefile to add or change tasks, or delete it
40
+ if you're sticking with the command-line wrapper.
41
+
42
+ + Add more pages and layouts.
43
+
44
+ + Start Rote in monitor mode, and have your changes rendered as
45
+ you work:
46
+
47
+ (rote|rake) doc_monitor
48
+
49
+
@@ -0,0 +1,100 @@
1
+ # Standard Rakefile for dokkit documentation build
2
+ #
3
+ #
4
+ begin
5
+ require 'rubygems'
6
+ rescue LoadError
7
+ nil # optional
8
+ end
9
+
10
+ require 'rake'
11
+ require 'rake/clean'
12
+ require 'rote/format'
13
+ require 'dokkit'
14
+ require 'dokkit/filters'
15
+ require 'lib/invoice'
16
+
17
+ include Rote
18
+ include Dokkit
19
+
20
+ CMD_LATEX = "latex -interaction=batchmode"
21
+ CMD_BIBTEX = "bibtex"
22
+
23
+ # Check if bibliography exists.
24
+
25
+ def bib_exists?
26
+ if Dir["*.bib"].empty?
27
+ false
28
+ else
29
+ true
30
+ end
31
+ end
32
+
33
+ # Create a set of tasks with the prefix 'doc' to build the
34
+ # documentation set. The directory layout is as for the
35
+ # command-line wrapper (but can be changed of course).
36
+ #
37
+ # This creates the following tasks:
38
+ #
39
+ # * doc - transform/copy all modified pages / resources
40
+ # * doc_pages - transform all modified pages
41
+ # * doc_res - copy all modified resources
42
+ # * doc_monitor - Start monitor mode, transform changed files automatically
43
+ #
44
+ # * [html/**/*] - Transform single page / resource unconditionally
45
+ #
46
+ # * clobber_doc - Remove output (hooks into main 'clobber' task)
47
+ #
48
+ # In addition to these tasks, you may also wish to define a 'doc_refresh' task
49
+ # to be run whenever modified resources are processed in monitor mode.
50
+
51
+ doc = Rote::DocTask.new(:doc) do |invoice|
52
+ invoice.output_dir = 'tex'
53
+ invoice.layout_dir = 'doc/layouts'
54
+ invoice.config_dir = 'doc/config'
55
+
56
+ invoice.pages.dir = 'doc/pages'
57
+ invoice.pages.include('**/*.yaml*')
58
+ invoice.pages.exclude('**/*.yaml')
59
+
60
+ invoice.res.dir = 'doc/res/tex'
61
+ invoice.res.include('**/*')
62
+
63
+ invoice.ext_mapping(/yamltex/, 'tex') do |page|
64
+ page.page_filter Dokkit::Filters::Deplate.new('latex-notemplate')
65
+ end
66
+
67
+ end
68
+
69
+ doc_dvi = Rote::DocTask.new(:doc_dvi) do |site|
70
+
71
+ site.output_dir = 'tex'
72
+ site.pages.dir = 'doc/pages'
73
+ end
74
+
75
+ task :doc_dvi => [:doc] do
76
+ pwd = Dir.getwd
77
+ Dir.chdir(doc_dvi.output_dir)
78
+ Dir["*.tex"].each { |file| 2.times { sh "#{CMD_LATEX} #{file}" } }
79
+
80
+ if bib_exists? then
81
+ Dir["*.aux"].each do |file|
82
+ if File.exists?(File.basename(file).sub(/.aux$/,".bib"))
83
+ sh "#{CMD_BIBTEX} #{file}"
84
+ 2.times { sh "#{CMD_LATEX} #{File.basename(file).sub(/.aux$/,".tex")}" }
85
+ end
86
+ end
87
+ end
88
+
89
+ Dir.chdir(pwd)
90
+ end
91
+
92
+ task :default => [:doc]
93
+
94
+ # import user-level tasks
95
+ #import "#{ENV['HOME']}/.rotetasks.rf" if File.exists?("#{ENV['HOME']}/.rotetasks.rf")
96
+ #import 'local.rf' if File.exists?('local.rf')
97
+
98
+ # TODO Define your custom tasks here
99
+
100
+
@@ -0,0 +1,12 @@
1
+ company:
2
+ name: MyCompany
3
+ address: Address
4
+ vat_number: 1234
5
+ telephone: (+39)666666
6
+ email: info@company.com
7
+ website: www.company.com
8
+ bank_name: MyBank
9
+ bank_current_account: 1234
10
+ bank_abi: 1234
11
+ bank_cab: 1234
12
+ bank_cin: X
@@ -0,0 +1,4 @@
1
+ customer:
2
+ name: Customer
3
+ address: Address
4
+ vat_number: 1234
@@ -0,0 +1,90 @@
1
+ \documentclass[a4paper,10pt]{article}
2
+
3
+ \input{include/packages.inc}
4
+
5
+ \usepackage{include/deplate}
6
+
7
+ \newcommand{\layout}[1][]{
8
+ \geometry{
9
+ left=2cm,
10
+ right=2cm,
11
+ top=2cm,
12
+ bottom=1.7cm,
13
+ headheight=1cm,
14
+ headsep=1cm,
15
+ footskip=1cm,
16
+ includeheadfoot}
17
+ \pagestyle{fancy}
18
+ \fancyhead{}
19
+ \fancyfoot{}
20
+ \lhead{\includegraphics[height=1cm]{images/logo.eps}}
21
+ \rhead{\fontfamily{cmss}\large\textbf{#1}\vspace*{\stretch{1}}\normalsize}
22
+ \lfoot{
23
+ \fontfamily{cmss}\scriptsize\textbf{<%= @config['company']['name'] %>} $\star$ \textbf{Indirizzo} <%= @config['company']['address'] %> $\star$ \textbf{P.IVA} <%= @config['company']['vat_number'] %>\\ \textbf{E-mail} <%= @config['company']['email'] %> $\star$ \textbf{Web} <%= @config['company']['website'] %> \normalsize
24
+ }
25
+ \rfoot{
26
+ \fontfamily{cmss}\textit{pag. \thepage\ / \pageref{LastPage}}
27
+ }
28
+ \renewcommand{\footrulewidth}{0.4pt}
29
+ }
30
+
31
+ \newcommand{\destinatario}[1]{\noindent\begin{flushright}\begin{minipage}{7cm}\textbf{Destinatario}\\\rule{\textwidth}{0.1mm}\\{#1}\end{minipage}\end{flushright}}
32
+
33
+ \layout[Fattura n. <%= @id %> del <%= @date %>]
34
+
35
+ \sffamily
36
+ \parindent=0pt
37
+
38
+ \begin{document}
39
+
40
+
41
+ \destinatario{
42
+ \textbf{<%= @config['customer']['name'] %>} \\
43
+ <%= @config['customer']['address'] %> \\
44
+ P.Iva: \textbf{<%= @config['customer']['vat_number'] %>}
45
+ }
46
+
47
+
48
+ \vspace*{2cm}
49
+
50
+ \noindent
51
+ \begin{longtable}{@{\extracolsep{\fill}}m{5cm}crr}
52
+ \textbf{Descrizione} & \textbf{Qu.} & \textbf{Importo unit.(\euro)} & \textbf{Importo tot.(\euro)} \\
53
+ \hline
54
+ \endhead
55
+ % Inserire qui i dati del preventivo
56
+ <%= @content_for_layout %>
57
+ & & \small Imponibile & \small \euro<%= @basic_price %> \\
58
+ & & \small IVA <%= @vat %>\% & \small \euro<%= @vat_price %> \\
59
+ & & \small\textbf{Totale Fattura} & \small\textbf{\euro<%= @total_price %>} \\
60
+ \end{longtable}
61
+ \normalsize
62
+
63
+ \footnotesize
64
+ \noindent
65
+ \textbf{Note}\\
66
+ Si prega di effettuare il pagamento a mezzo bonifico bancario intestato ad \textit{<%= @config['company']['name'] %>} usando le coordinate bancarie indicate di seguito:\\
67
+
68
+ %\begin{center}
69
+ \noindent
70
+ %\begin{tabular*}{0.92\textwidth}{ccccc}
71
+ %\textbf{Banca} & \textbf{ABI} & \textbf{CAB} & \textbf{CIN} & \textbf{C/C} \\
72
+ %\hline
73
+ \textbf{Banca:} <%= @config['company']['bank_name'] %> \\
74
+ \textbf{ABI:} <%= @config['company']['bank_abi'] %> \\
75
+ \textbf{CAB:} <%= @config['company']['bank_cab'] %> \\
76
+ \textbf{CIN:} <%= @config['company']['bank_cin'] %> \\
77
+ \textbf{C/C:} <%= @config['company']['bank_current_account'] %> \\
78
+ %\hline
79
+ %\end{tabular*}
80
+ %\end{center}
81
+
82
+ \noindent
83
+ (Indicare nella causale la ragione sociale e il numero di fattura. Se possibile, inviare via-fax o via-email la ricevuta del bonifico).
84
+ \normalsize
85
+
86
+ \vspace*{2cm}
87
+
88
+ Cogliamo l'occasione per porgere cordiali saluti.
89
+
90
+ \end{document}
@@ -0,0 +1,12 @@
1
+ # Shared code for all pages below this directory.
2
+ #
3
+ # This is executed for every file transformed, in the binding of
4
+ # the appropriate Rote::Page instance. Individual page sources
5
+ # ([pagename].rb) override anything defined here.
6
+ #
7
+ # Any COMMON.rb files found in directories above this will also
8
+ # be loaded.
9
+
10
+
11
+ # Apply the 'report' layout to all project's document
12
+ layout 'invoice.dpltex'
@@ -0,0 +1,5 @@
1
+ layout 'invoice.dpltex'
2
+ config 'company.yaml'
3
+ config 'customer.yaml'
4
+
5
+
@@ -0,0 +1,16 @@
1
+ invoice:
2
+ id: 0
3
+ vat: 20
4
+
5
+ services:
6
+ - service:
7
+ description: |
8
+ List:
9
+ - Product 1a
10
+ - Product 1b
11
+ quantity: 1
12
+ price: 100
13
+ - service:
14
+ description: Service 2
15
+ quantity: 2
16
+ price: 200
@@ -0,0 +1,46 @@
1
+ newcommand{customListPrefs}{setlength{parsep}{0cm}setlength{itemsep}{0cm}}
2
+ newenvironment{customList}{begin{list}{}{customListPrefs{}}}{end{list}}
3
+ newcommand{customItem}[2]{item[#1] #2}
4
+
5
+ newenvironment{tasklist}{begin{list}{}{customListPrefs{}}}{end{list}}
6
+ newcommand{task}[2]{item[textbf{#1}] #2}
7
+
8
+ definecolor{taskA}{rgb}{1,.5,.5}
9
+ definecolor{taskB}{rgb}{.5,1,.5}
10
+ definecolor{taskC}{rgb}{.5,.5,1}
11
+ definecolor{taskD}{rgb}{.5,1,1}
12
+ definecolor{taskE}{rgb}{1,.5,1}
13
+ definecolor{taskF}{rgb}{1,1,.5}
14
+ definecolor{taskdone}{rgb}{.5,.5,.5}
15
+
16
+ newcommand{taskdone}[1]{{footnotesizetextcolor{taskdone}{#1}}}
17
+ newcommand{taskA}[1]{colorbox{taskA}{#1}}
18
+ newcommand{taskB}[1]{colorbox{taskB}{#1}}
19
+ newcommand{taskC}[1]{colorbox{taskC}{#1}}
20
+ newcommand{taskD}[1]{colorbox{taskD}{#1}}
21
+ newcommand{taskE}[1]{colorbox{taskE}{#1}}
22
+ newcommand{taskF}[1]{colorbox{taskF}{#1}}
23
+
24
+ newcommand{emphStyle}{em}
25
+ newcommand{emphSpan}[1]{emph{#1}}
26
+ newcommand{boldSpan}[1]{textbf{#1}}
27
+ newcommand{remoteSpan}[1]{#1}
28
+
29
+ newenvironment{overlayBlock}{}{}
30
+ newenvironment{scriptsizeBlock}{scriptsize{}}{}
31
+ newenvironment{boxBlock}{}{}
32
+ newenvironment{footnotesizeBlock}{footnotesize{}}{}
33
+ newenvironment{smallBlock}{small{}}{}
34
+ newenvironment{landscapeBlock}{}{}
35
+ newenvironment{gridBlock}{}{}
36
+ newenvironment{formalBlock}{}{}
37
+
38
+ newenvironment{todoBlock}{}{}
39
+
40
+ newenvironment{bookBlock}{}{}
41
+ newenvironment{booksList}{begin{list}{}{customListPrefs{}}}{end{list}}
42
+ newcommand{booksItem}[2]{item[textbf{#1}] #2}
43
+
44
+ newenvironment{exampleBlock}{bfseries{}}{}
45
+ newenvironment{examplesList}{begin{list}{}{customListPrefs{}}}{end{list}}
46
+ newcommand{examplesItem}[2]{item[#1] #2}
@@ -0,0 +1,209 @@
1
+ %!PS-Adobe-3.0 EPSF-3.0
2
+ %%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner
3
+ %%Title: logo_ufficiale.eps
4
+ %%CreationDate: Sat Jan 7 18:00:35 2006
5
+ %%DocumentData: Clean7Bit
6
+ %%LanguageLevel: 2
7
+ %%Pages: 1
8
+ %%BoundingBox: 14 14 94 43
9
+ %%EndComments
10
+ %%BeginProlog
11
+ % Use own dictionary to avoid conflicts
12
+ 10 dict begin
13
+ %%EndProlog
14
+ %%Page: 1 1
15
+ % Translate for offset
16
+ 14.173228346456694 14.173228346456694 translate
17
+ % Translate to begin of first scanline
18
+ 0 28.346456692913389 translate
19
+ 78.910406469461591 -28.346456692913389 scale
20
+ % Image geometry
21
+ 103 37 8
22
+ % Transformation matrix
23
+ [ 103 0 0 37 0 0 ]
24
+ % Strings to hold RGB-samples per scanline
25
+ /rstr 103 string def
26
+ /gstr 103 string def
27
+ /bstr 103 string def
28
+ {currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
29
+ {currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
30
+ {currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
31
+ true 3
32
+ %%BeginData: 7676 ASCII Bytes
33
+ colorimage
34
+ o)Ajlq""1WY5a"~>
35
+ o)Ajik0W,\Y5a"~>
36
+ o)AjghSRt:Y5a"~>
37
+ pAYR!jkSM=f\+s0f%/pYZN#F~>
38
+ pAYQpU4RN'FaeUUD/5d1ZN#F~>
39
+ pAYQlH;-=C-n[)%.PQ#,ZN#F~>
40
+ q#:otgt1HDj5T(Wi8<GKg=+UG[/YX~>
41
+ q#:oWJT-^CSXc.9Q'7;hIq<?M[/YX~>
42
+ q#:oH9e8S'8Oc'33]/TA+VcTT[/YX~>
43
+ qYpWqhqJ"h%--@,iS`VMh;$`5h#"P[J,~>
44
+ qYq9*Mh%OsUS=HSSXZ"3P)kQYK4f`)[f:j~>
45
+ qYq9'><>b_<)QLc845['1bU:&)\u'4[f:j~>
46
+ qu6`kf&?Pg%c,OYdG!R;hqm2EgY('K\,Us~>
47
+ qu7GfDj7,sVl$;F>utB^Q^!VmMhct4@,&0jJ,~>
48
+ qu7GW1.teT>?Y,t0/5":4ub;K-6F*;)U,\jJ,~>
49
+ r;RW(f&YuUjkeP(c1]]$^YIc)hVHuAg=asB\Gq'~>
50
+ r;RVZCo+,2Ukrn49AjFr)MaWBO,SmKJUCk>\Gq'~>
51
+ r;RVG/m2Lh?;<Ws7,MD[%6?R.0.8"`'FkeK\Gq'~>
52
+ rVlomf`("5d/L][^Y6X*]aE3Hi8<DIgXOd*j1,,>~>
53
+ rVm8bEi?";=VMM_)ga.8'+807P`^r^L2(RFRf9ktJ,~>
54
+ rVm&P2-aR"2#[g`&p>Q"$4A@J3&)m.*>g1^F8i`MJ,~>
55
+ rr30!fB)/Xc2PBV^AGSKd,Ep?hVHcR[Jta~>
56
+ rr3;qDPO569+qsR)#FsO=dbP<Nf%c'[Jta~>
57
+ rr3;k10@ss/IDgm%JpJ;.6opM/0u^Z[Jta~>
58
+ rr3tjj6#Ogh!!e`l/]mu]tD).iS`VMgsF[-f[\mY])R9~>
59
+ rr3s]T;ersKs-rP[%9/h'+bpgR[0+tLfJDEF`!$5])R9~>
60
+ rr3s(;dX*O;fQ>jF(-7!$4%"l69@"U,oA=.2CVc(])R9~>
61
+ s8O,,gZI\_l0@R"lg!`n`PB+!eDfHEhV?l?g=b*/ft.36~>
62
+ s8O+RKVtlRZF.3Q\@/`00HLc=BptBPO+i:@J:)W_H+O$+~>
63
+ s8O+84^;H1DfpASI!B[:)\<8^0ge&\/gVSW&dngD4M(QC~>
64
+ s8O"hjlYail0@U$m-Es!^qIFscf3p@hVHuAg=cJWqYpTm2uY?.L\^rM>lH8Sg[tLKm]VFT2>\p)
65
+ V#()kT`-JC0(8Z:J,~>
66
+ s8O*ZUo:B!Za[NY]=>8G*>9),;k',;O,SmJJ:)WdE;KS8qD\C)!/LCM!*oLS!8I/G"R`IL@5[p5
67
+ !2TJk!20<B!A<j;s*t~>
68
+ s8O)u<aB6OEd<.eJUDTQ&./aT-q$3V0.7q\&dngC/c,JJqD\C)!/LCM!*oLS!8I/G"R`IL@5[p5
69
+ !2TJk!20<B!A<j;s*t~>
70
+ +91``jlYail0I^'m-Erf]tM2<eDfHEhVHuAg=b*/g%t^KVYpJq'_hJ(!':)Z!7UZA!rdfWpAb2U
71
+ qu6]r/,]GJM>I7&~>
72
+ +90*-V5^Q#[(*c`]t(Of',)=IAso!LO,JgIJ:)T`H2@O@VYpJq'_hJ(!':)Z!7UZA!rdfWpAb2U
73
+ qu6]r/,]GJM>I7&~>
74
+ +9/#p='fHSFF/UrKRJ#3$47870ge)^/ghbZ&dngD4o50YVYpJq'_hJ(!':)Z!7UZA!rdfWpAb2U
75
+ qu6]r/,]GJM>I7&~>
76
+ +91-VjlYail0@U$lg*]L]tN%Yj5T"ShVHuAg=Y$+p\Omi4T#0ZTDJQf3rT*Ze+`kCr_N1e!0R0Y
77
+ !5A@2!?h=;s*t~>
78
+ +9-qaV5^Q#[(!WZ]==ja',,J^Sskt/O,JdHJ:)TNiVNQS4T#0ZTDJQf3rT*Ze+`kCr_N1e!0R0Y
79
+ !5A@2!?h=;s*t~>
80
+ +9,25='fHSF*`@hJ9u,H$48pn8jb]u/ghbZ&IJUOeGB1F4T#0ZTDJQf3rT*Ze+`kCr_N1e!0R0Y
81
+ !5A@2!?h=;s*t~>
82
+ #liW>jlYail0A96''dfV]trgkj5JqRhVHuAg"=m6qYpQBqZ$UQqYpOVrVurIp\t5Qr;Zm.:lY@<
83
+ !7LcE!)rap!3lA#J,~>
84
+ *rgJYUo:AuZF.3Q\@,EO'-a9HSXPk-Nf/[FIsZ6tqYpQBqZ$UQqYpOVrVurIp\t5Qr;Zm.:lY@<
85
+ !7LcE!)rap!3lA#J,~>
86
+ *reE"<aB6NE-?PTHZh7R$5-E:8O>Kq/LDPV&.&GMqYpQBqZ$UQqYpOVrVurIp\t5Qr;Zm.:lY@<
87
+ !7LcE!)rap!3lA#J,~>
88
+ #lWB8jQ5Oekir*3!94!k%`[Siio/hQhVHu@g"=mQqYp\0!!!d;rVur=qu6XWrVurIq#:Bg&cMb2
89
+ ,M2Pe#ic$f!,Vc;!(?_aJ,~>
90
+ *r0iLUSk,oYd:aF[$_UA'/QDVS=#S(NJ`IBIsZ##qYp\0!!!d;rVur=qu6XWrVurIq#:Bg&cMb2
91
+ ,M2Pe#ic$f!,Vc;!(?_aJ,~>
92
+ *qq<_<*NdDD/jZ@FC5I`$6)r=7mK'i.jQ,N%gXKHqYp\0!!!d;rVur=qu6XWrVurIq#:Bg&cMb2
93
+ ,M2Pe#ic$f!,Vc;!(?_aJ,~>
94
+ %/&<6jQ5Oekih9qkf`t=%E@Jhio/hQh;$c=g",*Xrrqfu!!%#UrVuq&qu6XWrVurIq#:>lr;Zi8
95
+ o)B#E!!!2e70!;gfDPZ!~>
96
+ %,6'"U8=fhY->1:Yt4j-%5X`MS!TA$N/<7>IWL\Krrqfu!!%#UrVuq&qu6XWrVurIq#:>lr;Zi8
97
+ o)B#E!!!2e70!;gfDPZ!~>
98
+ %*L7r;HR78BP_R)DCb\n%3&/:6p3I_.3]]F%1$PArrqfu!!%#UrVuq&qu6XWrVurIq#:>lr;Zi8
99
+ o)B#E!!!2e70!;gfDPZ!~>
100
+ #41+(j5f=aroX=GiVgG!`8fk9i8<DIgtUQ9e,B.C!07$Y#1<Dt!!!8fr;QaXrVurIq#:>?rVusI
101
+ rq$-oq%s)3:B.<m!!$j5s*t~>
102
+ %(h._TVJB`X0&P-QkfT6%5+<DR?j"sMhct9I:`-KrrA)Y!!^jM-NF,OkktG\3rT*Ze+iqCHN!mF
103
+ ./ri<#5K)9!)EQnrVuq7r;V9~>
104
+ %%K+F:/kD'@V0:e>7:E;%2_f05rphS-Qj9>$Q8R4rrA)Y!!^jM-NF,OkktG\3rT*Ze+iqCHN!mF
105
+ ./ri<#5K)9!)EQnrVuq7r;V9~>
106
+ #3F_$j5f:_rT4+-rOiW^j5T%Uhqm2Eg=b-4qYpg!,ldp#s8RuU!!%ZLrr>+Z!!(LCrr?:&!!$^'
107
+ rrAqq!!f\,p_3].%eBSuJ,~>
108
+ $_rZMStVsWW2Zes?MtNG6(OI2P`Ul^L4au%Hi!aIr?VFD1B7B3rVuqNr;QaXrVurIq#:=urVuq3
109
+ o)A]erW!2+s7d9.!"SSus*t~>
110
+ $[t'(92JVk?!h#K2>mjj+A"p`2_cd-*>]7n6i-ffr?VFD1B7B3rVuqNr;QaXrVurIq#:=urVuq3
111
+ o)A]erW!2+s7d9.!"SSus*t~>
112
+ #3=Y"ioB+\rT+$urk/cUh;[DOhqm2EgY1?3l2(D[\,H@5P5kRG"TSNBqu-Np3rT*Ze+iqC48o3[
113
+ J+EUE3rf6qq>^J7rVuq_rVqB~>
114
+ $_<9FS=cLMV5C/g0E)Uo*/L)OQ'.2dLkL>-Dm9*<!4Vq-#a55fkQLqd*;f^7!':)Z!7U`C!'C/[
115
+ !.XS>#<Mnc(&@n0EW,q<Pl:W4~>
116
+ $[+Hp7nZZX='8^2)?'sP%R3?G3AW67+W;%(#a"o_!4Vq-#a55fkQLqd*;f^7!':)Z!7U`C!'C/[
117
+ !.XS>#<Mnc(&@n0EW,q<Pl:W4~>
118
+ #41+'iSrnXro=(;rk/fUh;[DOhqm2EgtUN7eb].B"AJjr#42?h!)idr!3?(u!':)Z!7U`C!$(t<
119
+ !1!0U!71WE!,ql:!7^uJ!@e$Is*t~>
120
+ $FtYQR[ftBTqeBJrY#bYM49ltPE:`[L4au'DX@6""AJjr#42?h!)idr!3?(u!':)Z!7U`C!$(t<
121
+ !1!0U!71WE!,ql:!7^uJ!@e$Is*t~>
122
+ $C`S06:ORB;,^FgrX',D5=@^s2(pC'*>]:p+m/Y$"AJjr#42?h!)idr!3?(u!':)Z!7U`C!$(t<
123
+ !1!0U!71WE!,ql:!7^uJ!@e$Is*t~>
124
+ #56[,iSieUro4"1rk/c[a2m2rhqm2EgY1?5fD>LMh?!ZW;uQ^r[Jg.+5Q1T^3rT*Ze+iqC(]FC7
125
+ Re-OZAGuQ/ci*kD3W9!Y]Dhh\~>
126
+ $Jf]eQ^O>6StDZtrY#_q2a*FiOH#-QKRnPtE;KS;h?!ZW;uQ^r[Jg.+5Q1T^3rT*Ze+iqC(]FC7
127
+ Re-OZAGuQ/ci*kD3W9!Y]Dhh\~>
128
+ $I'bS4[DM-8k_r=rX')N)&bOn0InFk)&!Ga0`(ePh?!ZW;uQ^r[Jg.+5Q1T^3rT*Ze+iqC(]FC7
129
+ Re-OZAGuQ/ci*kD3W9!Y]Dhh\~>
130
+ #6*-0i8ESQro*q)r4NKYhr!;HgtUQ9f[njRrr@6A!!")=2ZP]5!!(IHrr>:_!!(@?rr=PJ!!%WC
131
+ rrh`s!!!)u2ZO`p!!#gos*t~>
132
+ $N4Y$Pa7]*S"-!Qr"BGtP)tZ]LkUG1H['i4rr@6A!!")=2ZP]5!!(IHrr>:_!!(@?rr=PJ!!%WC
133
+ rrh`s!!!)u2ZO`p!!#gos*t~>
134
+ $Mto%3'9Dl6q0Wqr!EfK1b^F,+WD.,#m3Bfrr@6A!!")=2ZP]5!!(IHrr>:_!!(@?rr=PJ!!%WC
135
+ rrh`s!!!)u2ZO`p!!#gos*t~>
136
+ "97!0hu;R5i;h$u]aNKLhVHuAg=k64f&$<(!V[9"!!$X1rr?1#!!'h0rr>Rg!!$[(rrA&N!!<>]
137
+ s8RT~>
138
+ $NG(+Ocu&rQ^F.-r=]SRGE7`ALkUG1I!Kdkqu6]k'D)8)B)_f1=T/:#_"dp08,`JgBCu3(NV!2Q
139
+ "5s4ZJ,~>
140
+ $ND_21,_-T5!M:Qr!Ef]0.S@m*#9+o"Thd&rrMj-oDel'rr2t#rVur6q#:=arVuq2o`"oNoDesq
141
+ i;`h-~>
142
+ "9765hYuF3huL^o]aW*@h;-l@gY1?5f@AsZrrA\_!!E\us8R3?!!'"nrr@iR!!*r3pAY0l,kD!;
143
+ GQ7\n~>
144
+ $NGm;Nf]EfPa.Lbr=]T1Nf8jOKnFo(H?X;#qu6Ygo)Jn$n,NE0rVuqtq#:>LrVus9q"F^gr?Ut7
145
+ !dF\EJ,~>
146
+ $NF0T/MJt<2`Nf2r<`rO/L_th*#B4r#6=pMqu6Ygo)Jn$n,NE0rVuqtq#:>LrVus9q"F^gr?Ut7
147
+ !dF\EJ,~>
148
+ "98&Fh>Z:1hZ1Ik]`?%Nh$Mlkg=k64f@SO;qu6XQrVuq1qIopUrW!%\s8S5\!!,Cbq>UKL!WE'!
149
+ EVBD4\,H@-/c'/]>Q+U('_hWX~>
150
+ $NJh!MiEaYOHGYHrY#_pM2R4GKnFo(H['aLZhsb&2#[ITB)63A-2mlHNrT-ArVusbrqZQpg&_0Q
151
+ !-.`4!4Vq-!%n%]!*fF&!YkD/J,~>
152
+ $NJ9l-Rp]$0etKnrX')I.46>^)]'+r#Qb#0Oo,.Y2#[ITB)63A-2mlHNrT-ArVusbrqZQpg&_0Q
153
+ !-.`4!4Vq-!%n%]!*fF&!YkD/J,~>
154
+ s8N,Ph#?./h@.66]trIZgt^Z<g=b-Xf)aCgr;Qc<rVupUq>UGfrW!'HrVu$krW!$GXk*.Co`G-m
155
+ =oA=%7@)!kbQ@&/9`>"lZ24J$rZqIC!MBCB~>
156
+ s8NsXLPh"KNK&r@',)XDM26n>Jq/8rG^"@E^\n*3aSl/>2>R7PT`+oo,lRc+&,lP2,d#YirUg6k
157
+ s&o:#!_&Eqqof-+s%NCl!3uD#!WFAD!!/_lJ,~>
158
+ s8Nrr+XAEa.P!%[$477g,U"0H((gu]!s&E*TD\]haSl/>2>R7PT`+oo,lRc+&,lP2,d#YirUg6k
159
+ s&o:#!_&Eqqof-+s%NCl!3uD#!WFAD!!/_lJ,~>
160
+ s8N,ieGe8&h$_'4]uJj_gY:H8g"?8T!S$B3rr?@(!!&5YrrMa$rW!&/s8S/R!!D?_koo^"#*IaD
161
+ !!!c1q>UGKrVusTs*t~>
162
+ s8NeXC57V%M2I08',*9ZL4t82IslWfrc\BYZMa_&?2ag(PPP4ZoF:d""1J70O7iPUjo=Qgo`,2Y
163
+ h?!ZW(&Ib+!/:CP!Ajb+~>
164
+ s8NeB'cnJA,UF`H$47@f*?#_.&.AdGrW*$%OSo+Y?2ag(PPP4ZoF:d""1J70O7iPUjo=Qgo`,2Y
165
+ h?!ZW(&Ib+!/:CP!Ajb+~>
166
+ rr3)Tg"Y9\g^:p3]t`=Vg=k64f_j>%e`6W."mQ<m!!_carr?R.!!Q!ps8.9Kp](HYs8V"'p&G,U
167
+ FoD@@Dts>5irf8\!60N~>
168
+ rr3RXHA%!,L5.)h',uUWJUi2sHMhsfDk$_*"mQ<m!!_carr?R.!!Q!ps8.9Kp](HYs8V"'p&G,U
169
+ FoD@@Dts>5irf8\!60N~>
170
+ rr3U"()e/5*Zbat$4@^f'G1f^"p4`(!<[6<rrqZm!!!5hq#:>(rW!*os8VtG"S_s"jo>A=-2%<>
171
+ O`gX'!,qZ4!TO:]!!(#h~>
172
+ rr36%f@\g2gY9XF]`?L[g&K_%f)aIYrVlkQrVupqp\t64rVus#g]%3ThcMZMqZ$WXrVlu/9.'i<
173
+ !!/#lrVurCp\t4arVuq&J,~>
174
+ rr36!DL6teK7bWP'*VorIXHKfqf`'_LAh,PL].8R;>:(j`Voi<!o*_S"5d3:(Ae(3jo,2][nA(N
175
+ q>^PT'E.t3c1h5<8H&Sh>CZ~>
176
+ rr35t0,#':(DmV\$3_"Q%LWOFqZ-^!:]::nL].8R;>:(j`Voi<!o*_S"5d3:(Ae(3jo,2][nA(N
177
+ q>^PT'E.t3c1h5<8H&Sh>CZ~>
178
+ rVm*"eC`I.g;O!(#f+m>f?qphd+&$G!8IJP!:KjK!;#parT4+RqYpQpr8n"Wq>UHXqrRnJrT<hR
179
+ !:p-O!9o"~>
180
+ rVlrmB6jK+!&"6a#TdJrG@=TN?#9La!HrqjrrDKdjoG#Hs8D'[pA4dhrqtmYr;$?mkPOBAnGVMC
181
+ rrDWhjoFXr~>
182
+ rVm)n,7b=t&IeRE!=/l."9AT+r;cmdrVllcroO4PpAb*R!;?9h!<2oY!;uZm!9a7A!:]sLpAY-`
183
+ roO4FJ,~>
184
+ r;QrseCW@*`q@"J`RNMfm'cqE~>
185
+ r;QrfA9`KL3;!pf0Pu#C]=.`i~>
186
+ r;QiZ+UR]H":"u/$CeL(J,~>
187
+ qu6ipeC3$e^@f/B^<-!Fo!eXL~>
188
+ qu6l^AS639()6HU";a;Oq9c\OJ,~>
189
+ qu6fP-3jVYo*PR3_thWfs*t~>
190
+ q>UTR_7d_$oXtIJ^uk@jr:@Q#J,~>
191
+ q>USR+;6(DoFhE_*2_Zop=6eTJ,~>
192
+ q>US6%13@IoEkdN'VjRcp!gVRJ,~>
193
+ rVm$!r;"j[pq6dD`65pn]`l=Jp&Fs[]DmB~>
194
+ rVm#ro]fs8p_*`H01QoX'*ToHg]-ok]DmB~>
195
+ rVm#qoBBU)pBgs,"UY)6"XE$\s7=IHs*t~>
196
+ rVlujl,gsD]b8*%a2ZBPf%AX,d`&r7c/\fhkILVC~>
197
+ rVluHYWk#D'+u3J2Dn3<Df^)A?nrH59:GdgWk&.[~>
198
+ rVluFXZ.s3$5*pu()@c2.l'(E:+H__7$dbYVn)hX~>
199
+ qu6lnlJ^FIkj.sB!S@;LrrMc_\c70~>
200
+ qu6lTZB]]QXg[s'!H@l6rrLd"\c70~>
201
+ qu6lSYE<p?WO)<u!G_E/rrL`t\c70~>
202
+ q#CBnV>l&~>
203
+ q#:Bmqka=C~>
204
+ q#:Bmqka=C~>
205
+ %%EndData
206
+ showpage
207
+ %%Trailer
208
+ end
209
+ %%EOF
@@ -0,0 +1,46 @@
1
+ \newcommand{\customListPrefs}{\setlength{\parsep}{0cm}\setlength{\itemsep}{0cm}}
2
+ \newenvironment{customList}{\begin{list}{}{\customListPrefs{}}}{\end{list}}
3
+ \newcommand{\customItem}[2]{\item[#1] #2}
4
+
5
+ \newenvironment{tasklist}{\begin{list}{}{\customListPrefs{}}}{\end{list}}
6
+ \newcommand{\task}[2]{\item[\textbf{#1}] #2}
7
+
8
+ \definecolor{taskA}{rgb}{1,.5,.5}
9
+ \definecolor{taskB}{rgb}{.5,1,.5}
10
+ \definecolor{taskC}{rgb}{.5,.5,1}
11
+ \definecolor{taskD}{rgb}{.5,1,1}
12
+ \definecolor{taskE}{rgb}{1,.5,1}
13
+ \definecolor{taskF}{rgb}{1,1,.5}
14
+ \definecolor{taskdone}{rgb}{.5,.5,.5}
15
+
16
+ \newcommand{\taskdone}[1]{{\footnotesize\textcolor{taskdone}{#1}}}
17
+ \newcommand{\taskA}[1]{\colorbox{taskA}{#1}}
18
+ \newcommand{\taskB}[1]{\colorbox{taskB}{#1}}
19
+ \newcommand{\taskC}[1]{\colorbox{taskC}{#1}}
20
+ \newcommand{\taskD}[1]{\colorbox{taskD}{#1}}
21
+ \newcommand{\taskE}[1]{\colorbox{taskE}{#1}}
22
+ \newcommand{\taskF}[1]{\colorbox{taskF}{#1}}
23
+
24
+ \newcommand{\emphStyle}{\em}
25
+ \newcommand{\emphSpan}[1]{\emph{#1}}
26
+ \newcommand{\boldSpan}[1]{\textbf{#1}}
27
+ \newcommand{\remoteSpan}[1]{#1}
28
+
29
+ \newenvironment{overlayBlock}{}{}
30
+ \newenvironment{scriptsizeBlock}{\scriptsize{}}{}
31
+ \newenvironment{boxBlock}{}{}
32
+ \newenvironment{footnotesizeBlock}{\footnotesize{}}{}
33
+ \newenvironment{smallBlock}{\small{}}{}
34
+ \newenvironment{landscapeBlock}{}{}
35
+ \newenvironment{gridBlock}{}{}
36
+ \newenvironment{formalBlock}{}{}
37
+
38
+ \newenvironment{todoBlock}{}{}
39
+
40
+ \newenvironment{bookBlock}{}{}
41
+ \newenvironment{booksList}{\begin{list}{}{\customListPrefs{}}}{\end{list}}
42
+ \newcommand{\booksItem}[2]{\item[\textbf{#1}] #2}
43
+
44
+ \newenvironment{exampleBlock}{\bfseries{}}{}
45
+ \newenvironment{examplesList}{\begin{list}{}{\customListPrefs{}}}{\end{list}}
46
+ \newcommand{\examplesItem}[2]{\item[#1] #2}
@@ -0,0 +1,24 @@
1
+ % Layout
2
+
3
+ \newcommand{\layout}[1][]{
4
+ \geometry{
5
+ left=2cm,
6
+ right=2cm,
7
+ top=2cm,
8
+ bottom=1.7cm,
9
+ headheight=1cm,
10
+ headsep=1cm,
11
+ footskip=1cm,
12
+ includeheadfoot}
13
+ \pagestyle{fancy}
14
+ \fancyhead{}
15
+ \fancyfoot{}
16
+ \lhead{\includegraphics[height=1cm]{images/logo.eps}}
17
+ %\chead{}
18
+ %\rhead{\fontfamily{cmss}\large\textbf{#1}\vspace*{\stretch{1}}\normalsize~\textit{(pag. \thepage\ di \pageref{LastPage})}\vspace*{\stretch{1}}}
19
+ \rhead{\fontfamily{cmss}\large\textbf{#1}\vspace*{\stretch{1}}\normalsize}
20
+ %\cfoot{\fontfamily{cmss}\footnotesize\textbf{Company} $\star$ \textbf{Location} $\star$ \textbf{Tel.} \\\textbf{Fax} $\star$ \textbf{e-mail} $\star$ \textbf{web} $\star$ \normalsize}
21
+ \lfoot{\fontfamily{cmss}\scriptsize\textbf{<%= @company %>} $\star$ \textbf{Location} $\star$ \textbf{Tel.} \\\textbf{Fax} $\star$ \textbf{e-mail} $\star$ \textbf{web} $\star$ \normalsize}
22
+ \rfoot{\fontfamily{cmss}\textit{pag. \thepage\ / \pageref{LastPage}}}
23
+ \renewcommand{\footrulewidth}{0.4pt}
24
+ }