Introducción

Non é o habitual, pero de cando en cando necesito facer algunha pequena presentación. Por exemplo para amosarlle ao meu equipo algunha aplicación ou tecnoloxía, de xeito que se expanda o coñecemento entre nós. Xa sexa que fixera isto con Office, Libreoffice ou outros programas similares, xeralmente parecíame demasiado tempo para o que era.

Non fai moito vín un vídeo de Iván GJ na Akademy-es 2025, no que se falaba de Presenterm, unha aplicación para facer presentacións de xeito rápido. Simplemente utilizando Markdown. Outras aplicacións, como Pandoc, permiten transformar Markdown a presentacións. Pero aquí directamente o que escribirmos será a presentación. Isto por riba de solucións coma Libreoffice, vaise gardar como texto plano, co cal podemos acceder ao contido sen necesidade dun procesador de textos, simplemente cun editor, ou mesmo cunha orde de terminal como cat. E poderemos ver a presentación directamente dende a terminal, imaxes incluídas.

Despois de ver o vídeo para a seguinte presentación no traballo utilicei Presenterm para preparar as vistas. Desta vez, a pesar de ter que buscar información sobre os comandos, si que tiven a sensación de productividade ao escribir. Non é que haxa moitos comandos, polo que as seguintes serán moito máis rápidas.

Presenterm

Imos pasar directamente a falar da aplicación. Como dixen estas presentacións escríbense en texto plano, polo que poderemos usar aplicacións coma vim, ou Kate para preparalas.

Instalación

No choio para Mac, foi tan sinxelo como executar brew install presenterm. No caso de Fedora, non está nos repositorios. Pero se imos á documentación, veremos que podemos instalalo con cargo. Para o que teremos que instalalo con sudo dnf install cargo e despois para instalar presenterm cargo install --locked presenterm. Isto vale tamén para outras distros, Arch teno nos repositorios, polo que chegaría cun sudo pacman -S presenterm.

Iniciando unha presentación

O primeiro que compre incluír é a vista de presentación do que imos a falar, como o título, subtitulo e autor. Isto faise con tags entre dúas liñas de tres guións, o mesmo que para os metadatos dos artigos en Jekyll. Por exemplo.

---
title: "Presenterm"
sub_title: "Instalación de presenterm"
autor: "Código Morrazo"
---

Este bloque será por si mesmo á primeira vista. O que poñamos enbaixo xa será parte da seguinte. A continuación o bloque dunha primeira vista, para presentar ao poñente.


Código Morrazo
==============

<!-- font_size: 2 -->
<!-- column_layout: [3, 2] -->

<!-- column: 0 -->
<span style="color: #ff0000; background-color: #888">Desenvolvedor en ...</span>
Anteriormente traballei en ...

Membro da comunidade de ...
Participei en ...

<!-- column: 1 -->
![Foto para ilustrar algo](faro-morrazo.jpg)

<!-- reset_layout -->

<!-- font_size: 3 -->
Un texto calquera que ocupará a presentación de lado a lado

<!-- font_size: 1 -->
<!-- column_layout: [1, 1, 3] -->

<!-- column: 0 -->

* Bullet point 1
* Bullet point 2
* Bullet point 3

<!-- column: 1 -->

Un texto calquera que irá na columna do medio, só é un exemplo.

<!-- column: 2 -->

|Columna 1|Columna 2|Columna 3|
|---------|---------|---------|
|datos|máis datos|e aínda máis datos|
|outra|fila con|máis datos|


<!-- end_slide -->

Isto xa sería outra slide
=========================

<!-- font_size: 2 -->
``python +exec
def print_names():
  for name in ['Xoan', 'Ana', 'Pedro', 'Brais']:
    print(name)
print_names()
``

Fin.

No bloque anterior podemos ver xa varias cousas para crear a estrutura da nosa vista. O primeiro é o que chaman setext que son os textos que van enriba dos iguais ===. Poden estar compostos por varias liñas se así o queremos.

Despois mudamos o tamaño do texto a utilizar, este vai dende o 1 (tamaño por defecto) ao 7, que é o maior que podemos utilizar.

Con column_layout o que estamos a facer é establecer dúas columnas. A primeira ocupará tres quintos da vista e a outra dous quintos.

column permite indicar en que columna imos traballar. Nótese que as columnas comezan con base cero, polo que se queremos indicar a primeira esta será a 0.

Como podemos ver na seguinte liña tamén podemos utilizar a etiqueta span de HTML para mudar as cores e dar outros estilos ao texto. Admite incluso o uso de clases.

Ao igual que no Markdown con ![]() podemos insertar imaxes, que sí, serán visibles na terminal. Entre os corchetes poremos o que viría a ser o texto alternativo, non moi necesario aquí en tempo de presentación, pero que se estamos a ler o contido en texto plano, pode ser de moita axuda. Entre os paréntesis irá a ruta á imaxe.

A liña de reset_layout permítenos finalizar as dúas columnas, co que o texto a continuación ocuparía o ancho total da vista.

<!-- end_slide --> indica que remata a vista. O que vaia despois desta liña xa formará parte da seguinte.

A última vista contén código que ademáis está marcado como executable.

Código

Cabe destacar que podemos amosar código na nosa presentación, coa notación normal de Markdown e que presenterm destacará a sintaxe, facilitando a lectura. Actualmente podemos ver as linguaxes soportadas para este resaltado na documentación.

Nalgúns casos mesmo podemos executar código nunha slide. Ao premer ctrl+e a saída dese código aparecerá embaixo do bloque. Para isto é preciso executar a presentación co parámetro -x. E que o bloque de código esté marcado para executar, por exemplo como vemos no exemplo anterior con ```python +exec.

Na imaxe pódese ver un pequeno código cun bucle no que imprime nomes, debaixo podemos ver a saída

Tamén admite scripts doutro tipo, como diagramas de Mermaid, D2 e LaTeX ou typst.

Temas

Podemos definir temas para a presentación ou a nivel global do sistema. Con isto podemos facer que as presentacións que utilicemos manteñan unha uniformidade a nivel global, sempre e cando o arquivo que utilicemos non sobre escriba esta configuración. A local primará. Enlace á documentación dos temas.

Exportar presentacións

Está moi ben ter a presentación en texto plano, pero se imos a un equipo no que non está instalado presenterm, ou a terminal que teñen non admite redimensionar as fontes, ou temos algún outro tipo de problema, todavía temos solución. No caso de que teñamos instalado weasyprint, poderemos exportar a PDF ou HTML. Non me vou extender máis aquí, xa que non utilicei a exportación. Documentación para exportar.

Visualizar presentacións

Para visualizar as presentacións, simplemente na terminal executaremos presenterm ficheiro.md mudando ficheiro.md pola nosa presentación. Eu recomendo ter cada presentación nunha carpeta propia, sobre todo se imos adxuntar outros ficheiros, coma clases, imaxes, etc. De xeito que quede todo un pouco máis ordeado.

Se queremos visualizar a presentación, con código interactivo, como comentei antes é preciso executar o comando co parámetro -x. Por exemplo presenterm presentación.md -x. Cando estemos nunha vista que conteña código, ao premer ctrl+e executaráse o código amosando a saída debaixo do bloque.

Desprazarnos polas slides

Para desprazarnos polas slides, podemos utilizar as teclas de vim, hjkl, ou podemos saltar a unha slide directamente. Ao premer ctrl+p veremos un modal cos títulos das distintas slides para escoller a cal queremos saltar. Para consultar outras teclas, simplemente na presentación pulsaremos ?.

Teclas para persenterm

Limitación

De cara á presentación no traballo tiven algunha limitación, algo sinxelo de solventar. Estaba a utilizar iterm2 coma terminal, pero non permite mudar o tamaño de letra na presentación. Polo que os textos quedaban co tamaño normal da terminal. Para amosar a presentación como quería tiven que mudar de terminal a Kitty, aí todo funcionou correctamente. O mesmo me ocorreu en Fedora KDE, con konsole, amosa as imaxes correctamente, pero non escala as fontes. A segunda vista do exemplo anterior quedaría así.

Imaxe de Konsole sen escalado de fontes

Outra vez isto queda resolto utilizando Kitty.

Aquí podemos ver o resultado completo con Kitty.

Imaxe animada polas distintas vistas da presentación

Conclusión

Cando teñamos que facer unha tarefa, o mellor é buscar algunha ferramenta que nos permita traballar dun xeito co que xa estemos familiarizados. Deste xeito poderemos centrarnos na tarefa entre mans, sen perder o tempo ca ferramenta que temos entre mans. Neste caso facer unha presentación é algo tan rápido como comezar a escribir, o formato Markdown xa o coñezo, co que tan só preciso aprender as cousas como column, font_size, etc e escribilas. Co tempo isto será automático e moito máis rápido que terme que mover polos menús de Libreoffice co rato. Xa que non aprendo os atallos, ao non ser algo que faga con frecuencia.

Fontes