home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / INTERNET / HTML / TEX2RTF / SOURCES.ZIP / TOOLS / TCHECK / CHECK.AWK next >
Encoding:
AWK Script  |  1994-04-24  |  4.4 KB  |  157 lines

  1. ;;; File:    check.awk
  2. ;;; Author:  Julian Smart
  3. ;;; Date:    24th April 1994
  4. ;;; Purpose: AWK script to flag some common errors in input to Tex2RTF.
  5. ;;;          Users are welcome to add to this -- please mail me your changes!
  6. ;;;          J.Smart@ed.ac.uk
  7. ;;; Usage:   You need AWK (e.g. GNU AWK). Sources may be ftp'ed from many sites.
  8. ;;;          A DOS executable is included with Tex2RTF. Use the batch script
  9. ;;;          tcheck.bat, or awk -f check.awk filename.tex
  10.  
  11. ; Initialisation
  12. BEGIN { IGNORECASE = 1;
  13.         FS = " ";
  14.         INTABULAR = 0;
  15.       }
  16.  
  17. ; Check for missing document style
  18. /documentstyle\[.*\]$/{
  19.        print "Error at line " NR ": missing major document style. Add e.g. {report}";
  20.      }
  21.  
  22. ; Labels should immediately follow section headings or captions
  23. /^\\label/{
  24.        print "Error at line " NR ": label should DIRECTLY follow section or caption.";
  25.      }
  26.  
  27. ; Common bracket confusion
  28. /\{\\[a-zA-Z]*{/{
  29.        print "Error at line " NR ": braces will confuse Tex2RTF. Try a space after the command.";
  30.      }
  31.  
  32. ; Middle of line
  33. /[^\{]\\bf[^A-Za-z\{]/{
  34.        print "Error at line " NR ": no brace before or after \\bf.";
  35.      }
  36. ; Start of line
  37. /^\\bf[^A-Za-z\{]/{
  38.        print "Error at line " NR ": no brace before or after \\bf.";
  39.      }
  40. ; On its own
  41. /^\\bf$/{
  42.        print "Error at line " NR ": no brace before or after \\bf.";
  43.      }
  44.  
  45. ; Middle of line
  46. /[^\{]\\it[A-Za-z^\{]/{
  47.        print "Error at line " NR ": no brace before or after \\it.";
  48.      }
  49. ; Start of line
  50. /^\\it[^A-Za-z\{]/{
  51.        print "Error at line " NR ": no brace before or after \\it.";
  52.      }
  53. ; On its own
  54. /^\\it$/{
  55.        print "Error at line " NR ": no brace before or after \\it.";
  56.      }
  57.  
  58. ; Middle of line
  59. /[^\{]\\rm[^A-Za-z\{]/{
  60.        print "Error at line " NR ": no brace before or after \\rm.";
  61.      }
  62. ; Start of line
  63. /^\\rm[^A-Za-z\{]/{
  64.        print "Error at line " NR ": no brace before or after \\rm.";
  65.      }
  66. ; On its own
  67. /^\\rm$/{
  68.        print "Error at line " NR ": no brace before or after \\rm.";
  69.      }
  70.  
  71. ; Middle of line
  72. /[^\{]\\small[^A-Za-z\{]/{
  73.        print "Error at line " NR ": no brace before or after \\small.";
  74.      }
  75. ; Start of line
  76. /^\\small[^A-Za-z\{]/{
  77.        print "Error at line " NR ": no brace before or after \\small.";
  78.      }
  79. ; On line of its own
  80. /^\\small$/{
  81.        print "Error at line " NR ": no brace before or after \\small.";
  82.      }
  83.  
  84. ; Middle of line
  85. /[^\{]\\large[^A-Za-z\{]/{
  86.        print "Error at line " NR ": no brace before or after \\large.";
  87.      }
  88. ; Start of line
  89. /^\\large[^A-Za-z\{]/{
  90.        print "Error at line " NR ": no brace before or after \\large.";
  91.      }
  92. ; On its own
  93. /^\\large$/{
  94.        print "Error at line " NR ": no brace before or after \\large.";
  95.      }
  96.  
  97. ; Middle of line
  98. /[^\{]\\Large[^A-Za-z\{]/{
  99.        print "Error at line " NR ": no brace before or after \\Large.";
  100.      }
  101. ; Start of line
  102. /^\\Large[^A-Za-z\{]/{
  103.        print "Error at line " NR ": no brace before or after \\Large.";
  104.      }
  105. ; On its own
  106. /^\\Large$/{
  107.        print "Error at line " NR ": no brace before or after \\Large.";
  108.      }
  109.  
  110. ; Middle of line
  111. /[^\{]\\LARGE[^A-Za-z\{]/{
  112.        print "Error at line " NR ": no brace before or after \\LARGE.";
  113.      }
  114. ; Start of line
  115. /^\\LARGE[^A-Za-z\{]/{
  116.        print "Error at line " NR ": no brace before or after \\LARGE.";
  117.      }
  118. ; On its own
  119. /^\\LARGE$/{
  120.        print "Error at line " NR ": no brace before or after \\LARGE.";
  121.      }
  122.  
  123. ; Middle of line
  124. /[^\{]\\normal[^A-Za-z\{]/{
  125.        print "Error at line " NR ": no brace before or after \\normal.";
  126.      }
  127. ; Start of line
  128. /^\\normal[^A-Za-z\{]/{
  129.        print "Error at line " NR ": no brace before or after \\normal.";
  130.      }
  131. ; On its own
  132. /^\\normal$/{
  133.        print "Error at line " NR ": no brace before or after \\normal.";
  134.      }
  135.  
  136. ; Opening brace at start of line
  137. /^\{[^\\]/ {
  138.        print "Warning at line " NR ": possible split command. If so, remove intervening newline.";
  139.      }
  140.  
  141. ; Start tabular environment
  142. /begin{tabular}/{
  143.        INTABULAR = 1;
  144.      }
  145. ; End tabular environment
  146. /end{tabular}/{
  147.        INTABULAR = 0;
  148.      }
  149. ; Check that we don't have \\ on its own within tabular environment.
  150. ; It will crash Tex2RTF.
  151. /^\\\\/ {
  152.      if (INTABULAR == 1)
  153.      {
  154.        print "Error at line " NR ": insert appropriate number of ampersands before end of row marker.";
  155.      }
  156.   }
  157.