diff options
Diffstat (limited to 'support/chktex/MakeChkTeXRC.pl')
-rwxr-xr-x | support/chktex/MakeChkTeXRC.pl | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/support/chktex/MakeChkTeXRC.pl b/support/chktex/MakeChkTeXRC.pl new file mode 100755 index 0000000000..4e7e9208ba --- /dev/null +++ b/support/chktex/MakeChkTeXRC.pl @@ -0,0 +1,71 @@ +# Used to convert chktexrc.in (which see) into chktexrc and ChkTeXRC.tex + +use strict; +use warnings; + +my $chktexrc_output; +if ( $ARGV[0] eq '--chktexrc' ) { + $chktexrc_output = 1; +} elsif ( $ARGV[0] eq '--latex' ) { + $chktexrc_output = 0; +} else { + exit 1; +} + + +# Filter the lines of the file +open(my $fh, '<:encoding(UTF-8)', $ARGV[1]) + or die "Could not open file '$ARGV[1]' $!"; + +while ( <$fh> ) { + if (/^#### END$/) { + exit 0; + } + + if ($chktexrc_output) { + # chktexrc output, so discard all lines over 2 + next if /^#{3,}/; + + s/\@verb\@/`/g; + s/\@endverb\@/'/g; + s/\@emph\@/*/g; + s/\@endemph\@/*/g; + s/\@ref\@/ /g; + s/\@endref\@//g; + + s/\@TeX@/TeX/g; + s/\@LaTeX@/LaTeX/g; + s/\@ChkTeX@/ChkTeX/g; + s/\@\\{2}\@//g; # \\ in LaTeX + s/\\\@ */ /g; # \@ in LaTeX + s/\@bf //g; + s/\@\&\@//g; + print; + + } else { + + # LaTeX output, so discard lines except with 1,3 + next if /^#{4,}/; + next if /^#{2} /; + # next unless /^#/; + s/^#+[ ]*//; + + s/\@emph\@/\\emph{/g; + s/\@endemph\@/}/g; + s/\@ref\@(.*)\@endref\@/~\\hyperref[rc:$1]{$1}/g; + + + s/\@TeX@/\\TeX{}/g; + s/\@LaTeX@/\\LaTeX{}/g; + s/\@ChkTeX@/\\chktex{}/g; + s/\@verb\@/\\verb@/g; + s/\@endverb\@/@/g; + s/\@\\{2}\@/\\\\/g; + s/\@bf/\\bf/g; + s/\@\&\@/&/g; + + print; + } +} +# TODO: +# \ChkTeX |