Skip to content

Commit 748d432

Browse files
committed
update to v2.0.0
1 parent 6b3792f commit 748d432

8 files changed

Lines changed: 314 additions & 247 deletions

File tree

README.md

Lines changed: 62 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Template Informe de práctica profesional DCC FCFM
22

3-
> [Typst](https://typst.app) es software relativamente nuevo que está creciendo muy rápidamente. Por esto, no puedo asegurar retrocompatibilidad entre versiones del template.
3+
> [Typst](https://typst.app) es software relativamente nuevo que está creciendo muy rápidamente. Por esto, no puedo asegurar retrocompatibilidad entre versiones del template, ni compatibilidad con la última versión de Typst.
44
55
Puedes ver un ejemplo de documento en [example.pdf](example.pdf).
66

@@ -9,53 +9,86 @@ Esta es una modificación de mi template original para [propuesta e informe de m
99
## Ejemplo de uso
1010

1111
```typ
12-
#import "conf.typ": conf, pronombre
13-
#show: conf.with(
14-
titulo: "El Título de mi Práctica",
15-
autor: (nombre: "Estudiante DCC", pronombre: pronombre.el),
16-
supervisor: (nombre: "Supervisora Empresa", pronombre: pronombre.ella),
12+
#import "conf.typ": conf
13+
#import "constants.typ": pronombre
14+
15+
#let data = (
16+
titulo: "EL TÍTULO DE MI PRÁCTICA",
17+
autoria: (
18+
nombre: "Estudiante DCC",
19+
pronombre: pronombre.el
20+
correo: "estudiante@example.com",
21+
telefono: "+56 9 1234 5678",
22+
),
23+
supervision: (
24+
nombre: "Supervisora Empresa",
25+
pronombre: pronombre.ella
26+
correo: "supervision@empresa.com",
27+
telefono: "+56 9 8765 4321",
28+
),
29+
practica: (
30+
numero: 1,
31+
codigo: "CC4901",
32+
carrera: "Ingeniería Civil en Computación",
33+
empresa: "EMPRE S.A.",
34+
periodo: "Enero - Febrero 2025",
35+
),
36+
fecha: none,
37+
espaciado_titulo: 1fr,
1738
)
1839
40+
#show: conf.with(metadata: data)
41+
1942
... el resto del documento empieza aquí ...
2043
```
2144

2245
Puedes ver un ejemplo más completo en [example.typ](example.typ). Para aprender la sintáxis de Typst existe la [documentación oficial](https://typst.app/docs).
2346

2447
## Parámetros de configuración
2548

26-
La función `conf` recibe los siguientes parámetros:
49+
El diccionario de configuración debe contener los siguientes campos:
2750

2851
| Parámetro | Descripción |
2952
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
3053
| `titulo` | El título de la práctica |
31-
| `autor` | Diccionario* con Nombre completo de estudiante y pronombre |
32-
| `practica` | 1 o 2 dependiendo de si es la primera o segunda práctica. |
54+
| `autoria` | Diccionario* con Nombre completo de estudiante, pronombre, teléfono y correo. |
55+
| `supervision` | Diccionario* con Nombre completo, pronombre, teléfono y correo de quien supervisó. |
56+
| `practica` | Diccionario con información sobre la práctica. |
57+
| `fecha` | Fecha en que se entrega el informe. Por defecto se usa la fecha actual. |
58+
| `espaciado-titulo` | espacio extra que rodea al título y al nombre en la portada, 1fr es lo mismo que el resto de espacios, 2fr es el doble, 0.5fr es la mitad, etc. |
59+
60+
### Campos de `autoria` y `supervision`
61+
62+
| Parámetro | Descripción |
63+
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
64+
| `nombre` | Nombre completo de la persona. |
65+
| `pronombre` | Pronombre de la persona. Se utiliza un valor del diccionario `pronombre`, usar `#import "constants.typ": pronombre` |
66+
| `correo` | Correo de la persona. |
67+
| `telefono` | Teléfono de la persona. |
68+
69+
### Campos de `practica`
70+
71+
| Parámetro | Descripción |
72+
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
73+
| `numero` | 1 o 2 dependiendo de si es la primera o segunda práctica. |
3374
| `codigo` | Colocar el código del ramo de práctica. (CC4901 para práctica I, CC5901 para práctica II.) |
34-
| `ingenieria` | Colocar el nombre de la carrera. |
35-
| `correo` | Colocar el correo de autor. |
36-
| `telefono` | Colocar el número de teléfono de autor. |
37-
| `periodo` | Período en que se realizó la práctica. Por ejemplo: 'Diciembre 2022 - Enero 2023'. |
75+
| `carrera` | Colocar el nombre de la carrera. |
3876
| `empresa` | Nombre de la empresa. |
39-
| `supervisor` | Diccionario* con Nombre y pronombre del supervisor |
40-
| `correo-supervisor` | Colocar el correo de supervisor. |
41-
| `telefono-supervisor` | Colocar el número de teléfono de supervisor. |
42-
| `fecha` | Fecha en que se entrega el informe. Por defecto se usa la fecha actual. |
43-
| `espaciado_titulo` | espacio extra que rodea al título y al nombre en la portada, 1fr es lo mismo que el resto de espacios, 2fr es el doble, 0.5fr es la mitad, etc. |
77+
| `periodo` | Período en que se realizó la práctica. Por ejemplo: 'Diciembre 2022 - Enero 2023'. |
4478

45-
*Nota: El diccionario debe contener los campos `nombre` y `pronombre` con el nombre completo y pronombre de la persona.
46-
El pronombre puede ser `pronombre.el`, `pronombre.ella` o `pronombre.elle` y para usarse debe ser importado con `#import "conf.typ": pronombre`.
47-
Ver [example.typ](example.typ) para un ejemplo de uso.
79+
Ver [example.typ](example.typ) y [metadata.typ](metadata.typ) para un ejemplo de uso.
4880

4981
## Cómo usar el template
5082

5183
### Opción 1: Usar el template de forma local
5284

53-
[Instalar Typst CLI](https://github.com/typst/typst#installation), clonar el repositorio y trabajar de manera local en un editor.
54-
Adicionalmente, puedes instalar un [LSP](https://github.com/nvarner/typst-lsp).
85+
[Instalar Typst CLI](https://github.com/typst/typst#installation), clonar este repositorio y trabajar de manera local en un editor.
86+
En VSCode, puedes usar la extensión [Tinymist Typst](https://marketplace.visualstudio.com/items?itemName=myriad-dreamin.tinymist)
5587

5688
### Opción 2: Usar en la app web
5789

58-
Esta opción no se recomienda del todo, ya que no siempre estará actualizada con la última versión del template.
90+
> [!Warning]
91+
> La última versión del proyecto disponible es la v1.1.1. Si deseas usar la última versión, deberás subir manualmente el proyecto a la [app web](https://typst.app).
5992
6093
1. Crear cuenta o iniciar sesión en [Typst.app](https://typst.app/)
6194
2. Abrir el siguiente [Proyecto](https://typst.app/project/rsxXr837gOiym7xg84m3e4)
@@ -64,6 +97,11 @@ Esta opción no se recomienda del todo, ya que no siempre estará actualizada co
6497

6598
## Changelog
6699

100+
### v2.0.0
101+
102+
* Se actualiza soporte para Typst v0.13.0
103+
* Se reemplazan los parámetros de los métodos por un diccionario de configuración
104+
67105
### v1.1.1
68106

69107
* Se ajusta el estilo de citas a `"council-of-science-editors"`, esto deja las citas contiguas como `[1, 2]` o `[1-3]`

bibliografia.bib

Lines changed: 0 additions & 30 deletions
This file was deleted.

conf.typ

Lines changed: 28 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,7 @@
1-
#let logos = (
2-
escudo: "imagenes/institucion/escudoU2014.svg",
3-
fcfm: "imagenes/institucion/fcfm.svg",
4-
dcc: "imagenes/institucion/dcc.svg",
5-
)
1+
#import "constants.typ": *
62

7-
#let pronombre = (
8-
el: (titulo: "O", guia: ""),
9-
ella: (titulo: "A", guia: "a"),
10-
elle: (titulo: "E", guia: "e"),
11-
)
12-
13-
#let guia(visible: true, body) = if visible [
14-
#set rect(width: 100%, stroke: black)
15-
#set par(justify: true, first-line-indent: 0pt)
16-
#block(breakable: false)[#stack(dir: ttb,
17-
rect(fill: black, radius: (top: 5pt, bottom: 0pt), text(fill: white, "Guía (deshabilitar antes de entregar)")),
18-
rect(fill: luma(230), radius: (top: 0pt, bottom: 5pt), body)
19-
)]] else []
20-
213
#let conf(
22-
titulo: none, // Título de la práctica
23-
autor: none, // diccionario con nombre y pronombre, (nombre: "", pronombre: pronombre.<el/ella/elle>)
24-
practica: 1, // puede ser práctica 1 o 2
25-
codigo: "CC4901", // CC4901 para práctica I, CC5901 para práctica II
26-
ingenieria: "Ingeniería civil en Computación", // Nombre de la carrera
27-
correo: "example@example.com", // Correo de autor
28-
telefono: "+56 9 8765 4321", // Número de teléfono de autor
29-
periodo: "Enero - Febrero 2024", // Periodo en que se realizó la práctica
30-
empresa: "Empre S.A.", // Nombre de la empresa
31-
supervisor: none, // (nombre: "nombre apellido", pronombre: pronombre.<el/ella/elle>)
32-
correo-supervisor: "example@example.com", // Correo de supervisor
33-
telefono-supervisor: "+56 9 8765 4321", // Número de teléfono de supervisor
34-
fecha: none, // si no se especifica, se usa la fecha de hoy
35-
espaciado_titulo: 1fr, // espacio extra que rodea al título y al nombre en la portada, 1fr es lo mismo que el resto de espacios, 2fr es el doble, etc.
4+
metadata: (:), // metadata del documento
365
doc,
376
) = {
387
let header = [
@@ -74,10 +43,10 @@
7443

7544

7645
let _informe = [#set text(weight: "bold", size: 24pt)
77-
Informe de Práctica Profesional #numbering("I", practica)]
78-
let _ingenieria = text(size: 16pt, ingenieria)
46+
Informe de Práctica Profesional #numbering("I", metadata.practica.numero)]
47+
let _ingenieria = text(size: 16pt, metadata.practica.carrera)
7948
let _supervisor(gen: pronombre.el) = [Supervisor#gen.guia]
80-
let _fecha = if fecha != none [#fecha] else [
49+
let _fecha = if metadata.fecha != none [#fecha] else [
8150
// Workaround para traducir meses
8251
#show "January": "Enero"
8352
#show "February": "Febrero"
@@ -92,31 +61,29 @@
9261
#show "November": "Noviembre"
9362
#show "December": "Diciembre"
9463
#datetime.today().display("[day] de [month repr:long] de [year]")
95-
]
64+
]
9665

9766
let portada = align(center)[
98-
9967
#stack(dir: ttb, spacing: 1fr,
100-
espaciado_titulo,
68+
metadata.espaciado-titulo,
10169
_informe,
10270
0.2fr,
103-
text(size: 20pt, titulo),
104-
espaciado_titulo,
105-
text(size: 24pt, smallcaps(autor.nombre)),
71+
text(size: 20pt, metadata.titulo),
72+
metadata.espaciado-titulo,
73+
text(size: 24pt, smallcaps(metadata.autoria.nombre)),
10674
0.2fr,
10775
_ingenieria,
108-
espaciado_titulo,
109-
76+
metadata.espaciado-titulo,
11077
[
11178
#set terms(separator: ": ")
112-
/ Correo: #correo
113-
/ Teléfono: #telefono
114-
/ Empresa: #empresa
115-
/ Periodo de realización: #periodo \ \
116-
/ #_supervisor(gen: supervisor.pronombre): #supervisor.nombre
117-
/ Correo: #correo-supervisor
118-
/ Teléfono: #telefono-supervisor \ \
119-
#codigo Práctica Profesional #numbering("I", practica) \
79+
/ Correo: #metadata.autoria.correo
80+
/ Teléfono: #metadata.autoria.telefono
81+
/ Empresa: #metadata.practica.empresa
82+
/ Periodo de realización: #metadata.practica.periodo \ \
83+
/ #_supervisor(gen: metadata.supervision.pronombre): #metadata.supervision.nombre
84+
/ Correo: #metadata.supervision.correo
85+
/ Teléfono: #metadata.supervision.telefono \ \
86+
#metadata.practica.codigo Práctica Profesional #numbering("I", metadata.practica.numero) \
12087
/ Fecha de entrega: #_fecha
12188
],
12289
)
@@ -131,38 +98,26 @@
13198
set par(
13299
justify: true,
133100
first-line-indent: 15pt,
101+
spacing: 2em, // Espacio entre párrafos
134102
) // Formato de párrafos
135-
show par: set block(spacing: 2em) // Espacio entre párrafos
136103
set cite(style: "council-of-science-editors") // esto deja las citas contiguas como [1, 2] o [1-3]
137104
pagebreak(weak: true) // Salto de página
138105
counter(page).update(1) // Reestablecer el contador de páginas
139106

140107
let numbering-indent = 2em
141108
let page-num-indent = 1.2em
142109
show bibliography: set heading(numbering: "1.")
143-
show selector(outline.entry): it => {
144-
let num = if it.body.has("children") [#it.body.children.first()] else []
145-
box(width: numbering-indent, num)
146-
if it.body.has("children") [
147-
#link(it.element.location())[#for i in it.body.children.slice(1) {i}]
148-
] else [#link(it.element.location())[ #it.element.body]]
149-
box(width: 1fr, repeat[.])
150-
box(width: page-num-indent, align(right, it.page))
151-
}
152-
153-
show selector(outline.entry.where(level: 1)): strong // Negrita para los títulos de nivel 1
110+
set outline.entry(fill: none)
111+
show outline.entry.where(level: 1): it => box(height: 20pt, align(bottom, strong(it)))
112+
show outline.entry.where(level: 2): it => box(height: 10pt, h(15pt) + it)
154113

155114
[ \ ]
156-
outline(
157-
depth: 2,
158-
indent: none,
159-
)
115+
outline(depth: 2)
160116

161-
show heading: it => {
162-
it
163-
par(text(size:0.35em, h(0.0em)))
164-
} // Workaround para que se aplique la indentación al primer párrafo luego de un heading
165-
set page(numbering: "1", margin: (top: 3cm, bottom: 2cm, rest: 2.5cm))
117+
set page(
118+
numbering: "1",
119+
margin: (top: 3cm, bottom: 2cm, rest: 2.5cm)
120+
)
166121
pagebreak(weak: true) // Salto de página
167122
counter(page).update(1) // Reestablecer el contador de páginas
168123
doc

constants.typ

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#let logos = (
2+
escudo: "imagenes/institucion/escudoU2014.svg",
3+
fcfm: "imagenes/institucion/fcfm.svg",
4+
dcc: "imagenes/institucion/dcc.svg",
5+
)
6+
7+
#let pronombre = (
8+
el: (titulo: "O", guia: ""),
9+
ella: (titulo: "A", guia: "a"),
10+
elle: (titulo: "E", guia: "e"),
11+
)

example.pdf

-207 KB
Binary file not shown.

0 commit comments

Comments
 (0)