Autor

Colaboraciones

Artículos escritos por los lectores.

Más artículos de Colaboraciones | Porfolio

Índice

Este artículo es una colaboración de Luis Liñan, @lulivi.

En esta entrada del blog utilizaremos un script simple que nos permitirá actualizar automáticamente nuestro documento pdf (a partir del fichero tex) y devolverlo al directorio de trabajo manteniendolo totalmente limpio.

Estructura del directorio

Siguiendo la estructura ya comentada en otro artículo del blog tendremos lo siguiente en nuestro directorio de trabajo:

.
|-- figures
|   |-- figure_1.pdf
|   `-- ...
|-- main.pdf
|-- main.tex
|-- ref.bib
|-- style.sty
`-- metafiles
    |-- main.aux
    |-- main.bbl
    |-- main.blg
    |-- main.fdb_latexmk
    |-- main.fls
    |-- main.lof
    |-- main.log
    |-- main.lot
    |-- main.out
    |-- main.pdf
    `-- main.toc

Ejecución del script

#!/bin/bash

# Help function
function help {
  echo "$0 <metafiles_directory>"
}

# Check correct execution of the script
if [ "$#" -ne 1 ]; then
  help
  exit 1
fi

# Create directory if it doesn't exist
if [ ! -d $1 ]; then
  mkdir $1
fi

# Copy the pdf from the temporal directory to the parent directory
function listen_pdf_update {
  pdf_substring='(.*[.]pdf.*)'
  while true; do
    change=$(inotifywait -e close_write $1)
    if [[ $change =~ $pdf_substring ]]; then
      cp $1/*.pdf ./
      echo "============> iNotify <============"
      echo "==>   Updated parent pdf file   <=="
      echo "==================================="
    fi
  done
}

# Set up listener for the target PDF file
listen_pdf_update $1 &

# Set up latex listener for changes in the directory
latexmk -shell-escape -silent -bibtex -view=pdf -xelatex -pdf -pvc -output-directory=$1

# Kill all processes created in this script
kill -9 -$$

Lo único que hay que hacer es ejecutar el script desde el directorio de trabajo pasando como argumento el directorio donde irán los outputs de la compilación:

$ /PATH/TO/SCRIPT/updatePdfLatex.sh <metafiles_directory>

Para más información sobre el script, vea el repositorio del script.

Referencias

¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo o comentando abajo.

Categorías:Etiquetas:

Quizá también te interese leer...