# -*- coding: utf-8 -*- """Plantilla mínima. Copiar a la carpeta de trabajo junto a iso.py y editar. Uso: python3 plantilla.py && imprimir doc.html con Chrome headless.""" from iso import * P=[] def page(eye,h,lead,fig,note=""): P.append(f'''
{eye}

{h}

{lead}

{fig}

{note}

Maluplast S.A.C.{len(P)+1}
''') def divider(num,titulo,sub): P.append(f'''
{num}

{titulo}

{sub}

Maluplast S.A.C.{len(P)+1}
''') # ---------- PORTADA ---------- P.append('''
Maluplast S.A.C.

Título de la
presentación

Bajada de una o dos líneas.

Maluplast S.A.C.1
''') # ---------- LÁMINA: comparación de dos objetos ---------- f='' f+=slab(60,240,300,22,"n")+chains(60,240,300,"long") f+=txt(210,320,"Lo que falla",21,600,K,"middle") f+=txt(210,352,"descripción corta",17,500,"#7a7a75","middle") f+=slab(560,240,300,20,"g")+chains(560,240,300,"mesh") f+=txt(710,320,"Lo correcto",21,600,"#0f4a2c","middle") f+=txt(710,352,"descripción corta",17,500,"#2e8a58","middle") f+=callout(40,20,["Qué mirar acá","y por qué importa"],210,236,"bottom","#e0563a") f+=callout(560,20,["Qué mirar acá","y por qué importa"],710,236,"bottom","#0f4a2c") f+='' page("Sección · 01","Título de la lámina", "Una frase que dice de qué se trata.",f, "La nota dice lo que el dibujo no puede: el matiz, la condición, el dato de respaldo.") # ---------- LÁMINA: proceso por etapas ---------- f='' for i,(lab,c) in enumerate([("Etapa 1","n"),("Etapa 2","y"),("Etapa 3","y"),("Etapa 4","n"),("Etapa 5","g")]): x=20+i*186 f+=step(x,190,i+1,lab,c,140,86) if i<4: f+=arrow(x+172,234,x+212,234,"#8a8a8a",6) f+=callout(20,40,["Punto de control","qué se decide acá"],96,186,"bottom","#0f4a2c") f+=txt(470,378,"La conclusión del proceso, en una línea",20,600,"#7a7a75","middle") f+='' page("Sección · 02","Un proceso por etapas", "Cinco etapas y dónde se decide lo que importa.",f) # ---------- LÁMINA: magnitudes proporcionales ---------- base=290; W=22; STEP=34 g1="".join(prism(110+i*STEP, base-30, W, 30,"g") for i in range(9)) g2="".join(prism(690+i*STEP, base-90, W, 90,"r") for i in range(3)) f='' f+=f'' f+=f'' f+=txt(535,236,"límite",18,600,"#e0563a","middle")+g1+g2 f+=txt(245,340,"Reparto entre muchos",21,600,K,"middle") f+=txt(745,340,"Reparto entre pocos",21,600,K,"middle") f+='' page("Sección · 03","Magnitudes a escala real", "Las dos áreas suman lo mismo: la comparación es honesta.",f, "Regla: si el dibujo afirma que dos cantidades son iguales, sus áreas deben serlo de verdad.") CSS='''@page { size: A4 landscape; margin: 15mm 16mm 11mm 16mm; } * { box-sizing: border-box; } body { font-family: "Avenir Next","Avenir","Helvetica Neue",Arial,sans-serif; color:#141414; margin:0; font-size:12pt; line-height:1.55; -webkit-print-color-adjust:exact; print-color-adjust:exact; } .page { page-break-after: always; position:relative; height:175mm; display:flex; flex-direction:column; } .page:last-child { page-break-after:auto; } .eyebrow { font-size:8pt; letter-spacing:.28em; text-transform:uppercase; color:#9a9a9a; font-weight:600; margin-bottom:6px; } h1 { font-size:40pt; font-weight:600; margin:0 0 12px; letter-spacing:-.022em; line-height:1.03; } h2 { font-size:27pt; font-weight:600; margin:0 0 6px; letter-spacing:-.015em; line-height:1.1; } .lead { color:#4a4a46; font-size:15pt; margin:0; line-height:1.45; max-width:205mm; } .lead.big { font-size:17.5pt; max-width:190mm; } .fig { flex:1; min-height:0; display:flex; align-items:center; justify-content:center; padding:12px 0 8px; } .fig > svg { width:auto; height:100%; max-width:100%; max-height:100%; } .note { font-size:12pt; color:#5f5e5a; margin:0; line-height:1.5; max-width:222mm; min-height:16pt; } .foot { font-size:7.6pt; color:#c0c0c0; letter-spacing:.14em; text-transform:uppercase; border-top:1px solid #f0f0f0; padding-top:6px; margin-top:8px; display:flex; justify-content:space-between; } .page.cover { justify-content:center; } .page.div { justify-content:center; } .page.div .foot, .page.cover .foot { margin-top:auto; } .page.div .secnum { margin-top:auto; font-size:96pt; font-weight:600; line-height:.9; color:#e8e6df; letter-spacing:-.04em; margin-bottom:6px; }''' open("doc.html","w").write(f'Doc{"".join(P)}') print("paginas:",len(P))