summaryrefslogtreecommitdiff
path: root/support/chktex/MakeChkTeXRC.pl
diff options
context:
space:
mode:
Diffstat (limited to 'support/chktex/MakeChkTeXRC.pl')
-rwxr-xr-xsupport/chktex/MakeChkTeXRC.pl71
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