home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume8 / textools2 / part01 / DeTeX.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-02-12  |  1.3 KB  |  68 lines

  1. /* COPYRIGHT (C) 1987  Kamal Al-Yahya */
  2. #include   "setups.h"
  3. DeTeX(buffer,out_file)            /* stripping TEX commands */
  4.  
  5. char *buffer;
  6. FILE *out_file;
  7. {
  8. int c,cc;
  9. char w[MAXWORD];
  10.  
  11. while ((c = *buffer++) != NULL)
  12.     {
  13.     switch (c)
  14.         {
  15. /* detect TeX commands (backslash) */
  16.         case '\\':
  17.             c=' ' ;        /* "erase" the backslash */
  18.             putc(c,out_file);
  19.             cc = *buffer++;
  20.             if (cc == '\n')            putc(cc,out_file);
  21.             else if (cc == '[')        buffer += display(buffer);
  22.             else if (cc == '(')        buffer += formula(buffer);
  23.             else if (cc == '$' || cc == '%')
  24.                 break;
  25. /* check for LaTeX \begin{equation}, \begin{eqnarray}, and \begin{displaymath} */
  26.             else
  27.                 {
  28.                 buffer--;
  29.                 buffer += get_buf_word(buffer,w);
  30.                 if (strcmp(w,"begin") == 0)
  31.                     {
  32.                     buffer++;
  33.                     buffer += get_buf_word(buffer,w);
  34.                     if (strcmp(w,"equation") == 0 ||
  35.                         strcmp(w,"eqnarray") == 0 ||
  36.                         strcmp(w,"displaymath") == 0)
  37.                         buffer += begin_to_end(buffer,w);
  38.                     }
  39.                 }
  40.             break;
  41.  
  42.         case '$':
  43.             buffer += dollar(buffer,out_file);
  44.             break;
  45.         case '%':
  46.             buffer += comment(buffer);
  47.             break;
  48. /* erase these character */
  49.         case '{':
  50.             c=' ';
  51.         case '}':
  52.             c=' ';
  53.         case '_':
  54.             c=' ';
  55.         case '^':
  56.             c=' ';
  57.         case '&':
  58.             c=' ';
  59.         case '#':
  60.             c=' ';
  61. /* default is doing nothing: pass the character to the output */
  62.         default:
  63.             putc(c,out_file);
  64.             break;
  65.         }
  66.     }
  67. }
  68.