imposition 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
data/bin/impostor CHANGED
@@ -67,7 +67,7 @@ def escalado(tipo)
67
67
  end
68
68
  #
69
69
  def todasPag(nPliegos, nX, nY, caben, tiene)
70
- STDOUT.puts("el pdf tiene #{tiene.to_i} paginas, pero en #{nPliegos.to_i} de #{nX}x#{nY} caben #{caben.to_i} paginas ¿usar las del pdf? (y/n)")
70
+ #STDOUT.puts("el pdf tiene #{tiene.to_i} paginas, pero en #{nPliegos.to_i} de #{nX}x#{nY} caben #{caben.to_i} paginas ¿usar las del pdf? (y/n)")
71
71
  escalar=STDIN.gets.to_s
72
72
  if escalar[0]==121 then#Y
73
73
  return true
@@ -100,7 +100,11 @@ class Mensaje
100
100
  return @retorno
101
101
  end
102
102
  def ==(msg)
103
- return @id==msg.id
103
+ if msg!=nil then
104
+ return @id==msg.id
105
+ else
106
+ return false
107
+ end
104
108
  end
105
109
  end
106
110
  #
@@ -209,6 +213,7 @@ class MensajeMedida < Mensaje
209
213
  if level==3 then
210
214
  return "no caben #{args[0]} paginas de #{args[1]["numero"].to_s+args[1]["unidad"]} de alto en un pliego de #{args[2]["numero"].to_s+args[2]["unidad"]}"
211
215
  elsif level==2 then
216
+ @id=15
212
217
  return "sobra #{args[0].to_s+args[1]} de alto"
213
218
  end
214
219
  end
@@ -307,6 +312,7 @@ end
307
312
  class PreguntaCXC < Pregunta
308
313
  attr_reader :cXC
309
314
  def initialize()
315
+ @ide=4
310
316
  @mensaje="cXC - cuadernillos por costura (0->todos unos dentro de otros, 1->todos uno al lado de otro o n-> de a n cuadernillos uno dentro de otro)"
311
317
  end
312
318
  def metodo(cXC)
@@ -337,6 +343,8 @@ end
337
343
  class PreguntaTodasPag < Pregunta
338
344
  attr_accessor :nPliegos, :nX, :nY, :caben, :tiene
339
345
  def initialize(nPliegos, nX, nY, caben, tiene)
346
+ @ide=3
347
+ @mensaje="el pdf tiene #{tiene.to_i} paginas, pero en #{nPliegos.to_i} de #{nX}x#{nY} caben #{caben.to_i} paginas ¿usar las del pdf? (y/n)"
340
348
  @nPliegos=nPliegos
341
349
  @nX=nX
342
350
  @nY=nY
@@ -352,7 +360,8 @@ end
352
360
  class PreguntaReducir < Pregunta
353
361
  attr_reader :q, :cuadernillosPorCostura, :paginasSobran, :nCuad, :sobranMenos
354
362
  def initialize(cuadernillosPorCostura, paginasSobran, nCuad, sobranMenos, q)
355
- @mensaje="en duro"
363
+ @ide=5
364
+ @mensaje="al ultimo grupo de #{cuadernillosPorCostura} cuadernillos le sobraran #{paginasSobran}p podemos reducirlo a #{nCuad} cuadernillos, asi sobrarian #{sobranMenos}. ¿0K? (y/n)"
356
365
  @cuadernillosPorCostura=cuadernillosPorCostura
357
366
  @paginasSobran=paginasSobran
358
367
  @nCuad=nCuad
@@ -396,4 +405,5 @@ class RespuestaImpostor
396
405
  end
397
406
 
398
407
  end#fin módulo
399
-
408
+ #proximo
409
+ #16
@@ -91,8 +91,16 @@ def refresh
91
91
  FileUtils.cp($entrada, $temp)
92
92
  end
93
93
 
94
+ #forma hash de variable para impostor
95
+ def nuevo(valor,unidad)
96
+ retorno=Hash.new
97
+ retorno["numero"]=valor ||= 0
98
+ retorno["unidad"]=unidad
99
+ return retorno
100
+ end
101
+
94
102
  #########
95
- module_function :funcionar, :checksCompile, :checksRun, :input2alchemist, :refresh
103
+ module_function :funcionar, :checksCompile, :checksRun, :input2alchemist, :refresh, :nuevo
96
104
 
97
105
  def self.pdfinfo(impostor, temp)
98
106
  Dir.chdir(File.dirname(temp))
@@ -151,7 +159,6 @@ def self.imponerStack(impostor,temp)
151
159
  hC=pdflatexUnit(impostor.h, impostor.h_["unidad"])
152
160
  impostor.h=hC[0]
153
161
  impostor.h_["unidad"]=hC[1]
154
-
155
162
  #las paginas que no existen se dejan en blanco
156
163
  cS=cutStack(impostor.nX,impostor.nY,impostor.nPaginas,impostor.nPliegos,impostor.w.to_f,impostor.h.to_f)
157
164
  for i in 0...cS.size
@@ -179,7 +186,8 @@ def self.imponerStack(impostor,temp)
179
186
  cutStack.puts "marginpar=0mm"
180
187
  cutStack.puts "}"
181
188
  cutStack.puts "\\begin{document}"
182
- cutStack.puts "\\includepdf[pages={#{cS}},nup=#{impostor.nX}x#{impostor.nY},noautoscale, frame, width=#{impostor.w}#{impostor.w_["unidad"]}, height=#{impostor.h}#{impostor.h_["unidad"]}]{#{temp}}"
189
+ cutStack.puts "\\includepdf[pages={#{cS}},nup=#{impostor.nX}x#{impostor.nY},noautoscale, width=#{impostor.w}#{impostor.w_["unidad"]}, height=#{impostor.h}#{impostor.h_["unidad"]}]{#{temp}}"
190
+ #TODO frame opcional
183
191
  cutStack.puts "\\end{document}"
184
192
  end
185
193
 
@@ -320,7 +328,7 @@ end
320
328
  def self.cutStack(nX,nY,nPaginas,nPliegos,w,h)
321
329
  coordenadas=getCoordinates(nX,nY,w,h)
322
330
  posiciones=myPlacePDF(nX,nY,nPaginas,nPliegos)
323
- remix=[]
331
+ remix=[]
324
332
  for i in 0...posiciones.size
325
333
  mix=Clases::Mix.new(posiciones[i].mC, coordenadas[posiciones[i].mP].x, coordenadas[posiciones[i].mP].y, posiciones[i].t)
326
334
  remix.insert(i, mix)
@@ -413,14 +421,14 @@ def self.mult4(paginasEnPliego)
413
421
  end
414
422
 
415
423
  def self.cortarCola(nPaginas, pagsEnCuadernillo, cuadernillosPorCostura)
416
- max = (nPaginas/pagsEnCuadernillo).ceil
424
+ max = (nPaginas.to_f/pagsEnCuadernillo.to_f).ceil
417
425
  if max*pagsEnCuadernillo>nPaginas then
418
426
  anterior=pagsEnCuadernillo*(max-1)
419
427
  q=nPaginas-anterior
420
428
  if q%4!=0 then
421
429
  q=((q/4)+1)*4
422
430
  end
423
- if anterior+q < max*pagsEnCuadernillo then
431
+ if anterior+q < max*pagsEnCuadernillo then
424
432
  return Clases::PreguntaReducir.new(cuadernillosPorCostura, max*pagsEnCuadernillo-nPaginas, q/4, (anterior+q)-nPaginas, q)
425
433
  end
426
434
  end
@@ -514,8 +522,8 @@ def self.validacion(impostor, preguntas)
514
522
  impostor.w=impostor.wReal
515
523
  if impostor.cuadernillos then
516
524
  impostor.w=impostor.w*2
517
- impostor.w_["numero"]=impostor.w
518
525
  end
526
+ impostor.w_["numero"]=impostor.w
519
527
  impostor.w_["unidad"]=impostor.size["unidad"]
520
528
  mensajes.push(Clases::MensajeDato.new(1, "horizontal", 4))#info
521
529
  impostor.wP_["numero"]=impostor.nX*impostor.w.to_f
@@ -595,14 +603,14 @@ def self.validacion(impostor, preguntas)
595
603
  hPDummy=impostor.hP_["numero"].send(impostor.hP_["unidad"])
596
604
  if redondear(impostor.nX*impostor.w.to_f) > redondear(impostor.wP.to(impostor.w_["unidad"]).to_f) then
597
605
  mensajes.push(Clases::MensajeMedida.new(3, "horizontal", [impostor.nX, impostor.w_, impostor.wP_]))#error
598
- elsif impostor.nX>0 and wPDummy -(impostor.nX*impostor.w.to_f).send(impostor.w_["unidad"]) > 0.send(impostor.wP_["unidad"]) then
606
+ elsif impostor.nX>0 and wPDummy -(impostor.nX*impostor.w.to_f).send(impostor.w_["unidad"]) > 1.send("point") then
599
607
  sobra=impostor.wP-(impostor.nX*impostor.w.to_f).send(impostor.w_["unidad"])
600
608
  impostor.wP=impostor.wP_["numero"].send(impostor.wP_["unidad"])
601
609
  mensajes.push(Clases::MensajeMedida.new(2, "horizontal", [sobra, impostor.wP_["unidad"]]))#warn
602
610
  end
603
611
  if redondear(impostor.nY*impostor.h.to_f) > redondear(impostor.hP.to(impostor.h_["unidad"]).to_f) then
604
612
  mensajes.push(Clases::MensajeMedida.new(3, "vertical", [impostor.nY, impostor.h_, impostor.hP_]))#error
605
- elsif impostor.nY>0 and hPDummy - (impostor.nY*impostor.h.to_f).send(impostor.h_["unidad"]) > 0.send(impostor.h_["unidad"]) then
613
+ elsif impostor.nY>0 and hPDummy - (impostor.nY*impostor.h.to_f).send(impostor.h_["unidad"]) > 1.send("point") then
606
614
  sobra=impostor.hP-(impostor.nY*impostor.h.to_f).send(impostor.h_["unidad"])
607
615
  impostor.hP=impostor.hP_["numero"].send(impostor.hP_["unidad"])
608
616
  mensajes.push(Clases::MensajeMedida.new(2, "vertical", [sobra, impostor.hP_["unidad"]]))#warn
@@ -674,7 +682,10 @@ def self.validacion(impostor, preguntas)
674
682
  pagsEnCuadernillo=impostor.cuadernillosPorCostura*4
675
683
  end
676
684
  if preguntas["reducir"]==nil or !preguntas["reducir"].ok then
677
- preguntas["reducir"]=cortarCola(impostor.nPaginas, pagsEnCuadernillo, impostor.cuadernillosPorCostura)
685
+ reducir=cortarCola(impostor.nPaginas, pagsEnCuadernillo, impostor.cuadernillosPorCostura)
686
+ if reducir!=nil then
687
+ preguntas["reducir"]=reducir
688
+ end
678
689
  else
679
690
  if preguntas["reducir"].yn then
680
691
  q=preguntas["reducir"].q
@@ -682,14 +693,18 @@ def self.validacion(impostor, preguntas)
682
693
  end
683
694
  impostor.bookletz=booklets(pagsEnCuadernillo, impostor.nPaginas, impostor.nPaginasReal, q)
684
695
  impostor.nPaginas=impostor.bookletz.length/2
696
+ impostor.nPliegos=(2*impostor.nPaginas.to_f/(nXm*impostor.nY)).ceil
697
+ #mensajes.push(Clases::MensajeDato.new(1, "paginas", 2))#info TODO if not already
685
698
  end
686
699
  #nPaginas multiplo de nX*nY
687
700
  if impostor.nX*impostor.nY!=0 and impostor.nPaginas%(impostor.nX*impostor.nY)!=0 then
688
701
  impostor.nPaginas=(impostor.nPaginas/(impostor.nX*impostor.nY)+1)*(impostor.nX*impostor.nY)
689
702
  mensajes.push(Clases::MensajeMultiplo.new(1, "El pdf tiene #{impostor.nPaginasReal} paginas, que impuestas en #{impostor.nX}x#{impostor.nY} son #{impostor.nPaginas} paginas"))
703
+ #TODO impostor.nPliegos=(impostor.nPaginas.to_f/(nXm*impostor.nY)).ceil ?
690
704
  end
691
- #TODO ¿ROTAR? si se gasta menos espacio por pliego o en total da menos pliegos
705
+
692
706
  return Clases::RespuestaImpostor.new(preguntas,mensajes)
693
707
  end
708
+ #TODO ¿ROTAR? si se gasta menos espacio por pliego o en total da menos pliegos
694
709
 
695
710
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imposition
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 61
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 2
10
- version: 0.9.2
9
+ - 3
10
+ version: 0.9.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Numerico