#!/bin/bash

COLOR_ERROR='01;31'
COLOR_WARNING='01;33'
COLOR_OUTPUT='01;32'

PCRE_ERROR='(^[^:]*:\d+: )|(^l\.\d+ )|(^! LaTeX Error: )'
PCRE_WARNING='(LaTeX Warning(:|))|(Package [^\s]+ Warning(:|))'
PCRE_OUTPUT='^Output written on .*\.pdf \(.*\)\.$'

if [ -t 1 ]; then
    ($* -file-line-error 2>&1) | perl -pe "s/${PCRE_ERROR}/\033[${COLOR_ERROR}m\$&\033[0m/gs;s/${PCRE_WARNING}/\033[${COLOR_WARNING}m\$&\033[0m/gs;s/${PCRE_OUTPUT}/\033[${COLOR_OUTPUT}m\$&\033[0m/gs"
else
    $*
fi