dokkit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ }