Lo que he aprendido: extraer las notas de beamer con una regex

¡Hoy he puesto a prueba mis habilidades informáticas! Quería extraer
las notas del tex de la presentación de la tesis para tener todo el
guión junto y poder prepararlo mejor y, evidentemente, no quería copiarlas a mano. Así que inicié mi investigación. Os la cuento.


Las notas tienen este formato:

\note{Contenido} % Sin overlay
\note<N>{Contenido} % Con overlay

Así que pensé en escribir una expresión regular que captara ambos
casos. Me salió una cosa así:

\\note(<\S+>)*\{(?<nota>[^}]+)\}

que hace lo siguiente:

  • Localiza \note

  • Busca una fila de caracteres sin espacios entre <>. Como esto solo
    aparece para el caso de los overlays, uso el * después del grupo
    para decirle que busque o bien uno o ninguno

  • Busca dos llaves y captura lo del interior con
    (?<nota>[^}]+), es decir, coge cualquier cosa que no sea una llave

Hice este miniprogramilla en Matlab para extraer las notas y
escribirlas en un fichero:

% Leer todo el archivo como string gigante

texto = fileread('presentation.tex');
exp = '\\note(<\S+>)*\{(?<nota>[^}]+)\}';

datos = regexp(texto,exp,'names');

notas = {datos.nota};

clear texto datos

% Escribir los datos en un md

fid = fopen('notas.md','w'); 
fprintf(fid,'%s \n\n', notas{:}); % línea blanca entre notas
fclose(fid); 

Luego tocó ir Emacs a corregir las chapuzas:

  • Corregí el ancho con autofill (M-q)
  • Quité la tabulación variable que tenía con C-u -4 C-x TAB, que
    permite reducir en 4 espacios la tabulación del texto seleccionado
  • Quité los saltos de línea (^M) con M-x replace-string buscando
    C-q C-m tal y como explican aquí

¡Listo! Ya están las notas preparadas, siete hojacas de texto que son :O

Referencias

Extract all \note tags from beamer as a simple text file en
StackExchange

Print a cell array as .txt in Matlab en
StackOverflow

Anuncios

2 pensamientos en “Lo que he aprendido: extraer las notas de beamer con una regex

  1. Pingback: Compilación: escribir la tesis | Onda Hostil

¡Opina sin miedo! (Puedes usar Markdown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s