[HOME]
[BASH]
[Window Managers]
Correct common LaTeX punctuation
#! /bin/sh
# latex-punctuation -- Interactively correct common LaTeX punctuation
if [ ! -e $1 ] || [ "$1" = "" ] ||
[ "`grep 'begin{document}' $1`" = "" ] ; then
echo "Usage: `basename $0` </path/to/master-file.tex>"
exit 1
fi
cd `dirname $1`
for i in *.tex ; do
# Replace '...' for '\ldots'
grep -H --line-number --color=auto '\.\.\.' $i &&
{
echo -e '\nCorrection:'
grep -H --line-number --color=auto '\.\.\.' $i | \
sed 's/\.\.\./\\ldots/g' | \
grep --line-number --color=auto 'ldots'
echo -n 'Apply [y|n]? '
read accept
while [ "$accept" = "" ] ; do
echo -n '[y|n]? '
read accept
done
[ "$accept" = "y" ] &&
{
sed -i 's/\.\.\./\\ldots/g' $i
echo -e '\nApplied!'
}
echo '-----------------------------'
}
# Add scaped space when '\ldots' tag it is not at the end of a
# paragraph
grep -H --line-number --color=auto '[^ ``]\\ldots\ [^ \\]' $i &&
{
echo -e '\nCorrection:'
grep -H --line-number --color=auto '[^ ``]\\ldots\ [^ \\]' $i | \
sed 's/\([^ ``]\\ldots\)\(\ [^ \\]\)/\1\\\2/g' | \
grep --line-number --color=auto 'ldots'
echo -n 'Apply [y|n]? '
read accept
while [ "$accept" = "" ] ; do
echo -n '[y|n]? '
read accept
done
[ "$accept" = "y" ] &&
{
sed -i 's/\([^ ``]\\ldots\)\(\ [^ \\]\)/\1\\\2/g' $i
echo -e '\nApplied!'
}
echo '-----------------------------'
}
# Add escaped space after abbreviation (LaTeX assumes end of line).
grep -H --line-number --color=auto '[^@]\.\ [a-z]' $i &&
{
echo -e '\nCorrection:'
grep -H --line-number --color=auto '[^@]\.\ [a-z]' $i | \
sed 's/\([^@]\.\)\(\ [a-z]\)/\1\\\2/g' | \
grep --line-number --color=auto '\.\\[^\\]'
echo -n 'Apply [y|n]? '
read accept
while [ "$accept" = "" ] ; do
echo -n '[y|n]? '
read accept
done
[ "$accept" = "y" ] &&
{
sed -i 's/\([^@]\.\)\(\ [a-z]\)/\1\\\2/g' $i
echo -e '\nApplied!'
}
echo '-----------------------------'
}
# Add \@ before end of line dot preceded by an upper case letter
# (Latex assumes abbreviation).
grep -H --line-number --color=auto '[A-Z]\.\ \ [A-Z]' $i &&
{
echo -e '\nCorrection:'
grep -H --line-number --color=auto '[A-Z]\.\ \ [A-Z]' $i | \
sed 's/\([A-Z]\)\(\.\ \ [A-Z]\)/\1\\@\2/g' | \
grep --line-number --color=auto '\\@'
echo -n 'Apply [y|n]? '
read accept
while [ "$accept" = "" ] ; do
echo -n '[y|n]? '
read accept
done
[ "$accept" = "y" ] &&
{
sed -i 's/\([A-Z]\)\(\.\ \ [A-Z]\)/\1\\@\2/g' $i
echo -e '\nApplied!'
}
echo '-----------------------------'
}
done
exit 0
[HOME]
[BASH]
[Window Managers]