home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1B / DATAFILE_PDCD1B.iso / _tex / tex / source / l2esrc1 / !TeX / LaTeX2eSrc / latexbug.tex < prev    next >
Text File  |  1994-09-26  |  13KB  |  524 lines

  1. % \iffalse meta-comment
  2. %
  3. % Copyright 1994 the LaTeX3 project and the individual authors.
  4. % All rights reserved. For further copyright information see the file
  5. % legal.txt, and any other copyright indicated in this file.
  6. % This file is part of the LaTeX2e system.
  7. % ----------------------------------------
  8. %  This system is distributed in the hope that it will be useful,
  9. %  but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. %  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. % IMPORTANT NOTICE:
  12. % For error reports in case of UNCHANGED versions see bugs.txt.
  13. % Please do not request updates from us directly.  Distribution is
  14. % done through Mail-Servers and TeX organizations.
  15. % You are not allowed to change this file.
  16. % You are allowed to distribute this file under the condition that
  17. % it is distributed together with all files mentioned in manifest.txt.
  18. % If you receive only some of these files from someone, complain!
  19. % You are NOT ALLOWED to distribute this file alone.  You are NOT
  20. % ALLOWED to take money for the distribution or use of either this
  21. % file or a changed version, except for a nominal charge for copying
  22. % etc.
  23. % \fi
  24.  
  25. %%% ====================================================================
  26. %%%  @LaTeX-file{
  27. %%%     author          = "David Carlisle",
  28. %%%     version         = "1.09",
  29. %%%     date            = "07 September 1994",
  30. %%%     filename        = "latexbug.tex",
  31. %%%     email           = "latex-bugs@uni-mainz.de",
  32. %%%     codetable       = "ISO/ASCII",
  33. %%%     keywords        = "LaTeX, bugs, reporting",
  34. %%%     supported       = "yes",
  35. %%%     docstring       = "
  36. %%%
  37. %%%     LaTeX bug report generator.
  38. %%%     %%%%%%%%%%%%%%%%%%%%%%%%%%
  39. %%%
  40. %%%     Processing this file with LaTeX should produce
  41. %%%     a file latexbug.msg in the current directory.
  42. %%%
  43. %%%     latexbug.msg may be used as a template for submitting bug
  44. %%%     reports concerning files in the standard LaTeX distribution.
  45. %%%
  46. %%%     Any bug report should include a small LaTeX test file
  47. %%%     that shows the bug, and the log that LaTeX produces on the
  48. %%%     test file.
  49. %%%
  50. %%%     Please check before submitting a bug report that your format is
  51. %%%     not more than one year old. New LaTeX releases occur at 6
  52. %%%     monthly intervals, and so your bug may be fixed in a later
  53. %%%     release.
  54. %%%
  55. %%%     Completed bug report forms should be submitted to:
  56. %%%     latex-bugs@uni-mainz.de
  57. %%%
  58. %%%  }
  59. %%% ====================================================================
  60.  
  61. \ifcat{=
  62.  
  63. \catcode`\{=1 \let\bgroup{
  64. \catcode`\}=2 \let\egroup}
  65. \catcode`\#=6 
  66. \catcode`\^=7
  67. \catcode`\@=11
  68.  
  69. \newlinechar`\^^J
  70. \def\m@ne{-1 }
  71. \countdef\count@255
  72.  
  73. \def\fmtname{INITEX}
  74. \def\fmtversion{9999/00/00}
  75. \def\@secondoftwo#1#2{#2}
  76. \everyjob{{}{INITEX}}
  77. \def\space{ }
  78. \def\@spaces{\space\space\space\space}
  79. \let\@@end\end
  80.  
  81. \chardef\msg15
  82. \immediate\openout\msg=\jobname.msg
  83.  
  84. \expandafter\edef\csname newif\endcsname#1#2{%
  85.   \let\noexpand\ifinteractive
  86.     \expandafter\noexpand\csname iffalse\endcsname}
  87.  
  88. \def\typeout{\immediate\write17}
  89.  
  90. \def\two@digits#1{\ifnum#1<10 0\fi\number#1}
  91.  
  92. \def\wmsg#1#{\bgroup\@wmsg}
  93.  
  94. \else
  95. %%
  96. %% @ is a letter
  97. %%
  98. \catcode`\@=11
  99.  
  100. %%
  101. %% Output stream to produce the bug report template.
  102. %%
  103. \newwrite\msg
  104. \immediate\openout\msg=\jobname.msg
  105.  
  106.  
  107. %%
  108. %% Check that LaTeX2e is being used.
  109. %%
  110. \ifx\undefined\newcommand
  111.  \newlinechar`\^^J%
  112.  \immediate\write17{^^J%
  113.     You must use LaTeX2e to generate the bug report!^^J^^J%
  114.     If there is a bug in the installation procedure,^^J%
  115.     and you can not create LaTeX2e, you may use initex^^J%
  116.     to generate the report}%
  117.  
  118.  \let\relax\end
  119. \else
  120. \def\@tempa{LaTeX2e}\ifx\@tempa\fmtname\else
  121.  \immediate\write17{^^J%
  122.   Older Versions of LaTeX are no longer supported.^^J%
  123.   You must use LaTeX2e to generate the bug report!^^J^^J%
  124.   If there is a bug in the installation procedure,^^J%
  125.   and you can not create LaTeX2e, you may use initex^^J%
  126.   to generate the report}%
  127.  \let\relax\@@end
  128. \fi\fi
  129.  
  130. %%
  131. %% \wmsg writes to the terminal, and the .msg file
  132. %% \wmsg* just writes to the .msg file
  133. %% \typeout just writes to the terminal
  134. %%
  135.  
  136. \def\wmsg{\bgroup\@ifstar{\interactivefalse\@wmsg}\@wmsg}
  137.  
  138. \fi
  139.  
  140. \relax
  141.  
  142.  
  143. \def\@wmsg#1{%
  144.   \ifinteractive\immediate\write17{#1}\fi
  145.   \immediate\write\msg{#1}%
  146.   \egroup}
  147.  
  148.  
  149. %%
  150. %% if \interactivefalse just make a blank template.
  151. %%
  152. \newif\ifinteractive
  153. \interactivetrue
  154.  
  155.  
  156. %%%
  157. %%% For testing for blank lines.
  158. %%%
  159. \def\xpar{\par}
  160.  
  161.  
  162. %%
  163. %% Opening Banner.
  164. %%
  165. \typeout{^^J%
  166. ============================================================^^J%
  167. ^^J%
  168. LaTeX bug report generator^^J%
  169. ==========================^^J%
  170. Processing this file with LaTeX will produce a template \jobname.msg^^J%
  171. for submitting bug reports for the LaTeX distribution.^^J%
  172. Please do not report bugs in other, non-standard, files to the^^J%
  173. latex-bugs address.^^J}
  174.  
  175. \count@=0
  176. \ifinteractive
  177. \typeout{%
  178. Several categories of files are supported,^^J%
  179. corresponding to directories in the standard LaTeX distribution:^^J^^J
  180. 0) base: \@spaces
  181.          The format itself, and the main classes such as `article'.^^J
  182. 1) tools:\@spaces
  183.          Packages supported by the LaTeX3 project team.^^J
  184. 2) graphics: 
  185.          The color and graphics packages.^^J
  186. 3) mfnfss: \space\space
  187.          Packages for using MetaFont fonts with NFSS (ie LaTeX2e).^^J
  188. 4) psnfss: \space\space
  189.          Packages for using PostScript fonts with NFSS (ie LaTeX2e).^^J
  190. 5) amslatex:
  191.          Classes and Packages supported by the AMS.^^J
  192. 6) babel:\@spaces
  193.          Packages supporting many different languages.^^J%
  194. }
  195. \message{Please select a category 0--6:  }
  196. \read\m@ne to \answer
  197. \count@=\answer
  198. \else
  199. \typeout{As you are using INITEX, I will assume category 0}
  200. \fi
  201.  
  202. \ifcase\count@
  203. \wmsg{^^J>Category: latex}\or
  204. \wmsg{^^J>Category: tools}\or
  205. \wmsg{^^J>Category: graphics}\or
  206. \wmsg{^^J>Category: mfnfss}\or
  207. \wmsg{^^J>Category: psnfss}\or
  208. \wmsg{^^J>Category: amslatex}\or
  209. \wmsg{^^J>Category: babel}\else
  210. \errhelp{Quit with `x' and then re-start latexbug}
  211. \def\badcategory{Only categories 0,...,6 are supported at this time}
  212. \errmessage{\badcategory}
  213. \fi
  214.  
  215.  
  216. \typeout{%
  217. ^^J%
  218. \ifinteractive
  219. This report generator may be used in one of two ways.^^J%
  220. If you choose the interactive option, you will be prompted to answer^^J%
  221. several questions. Otherwise a blank template will be created for^^J%
  222. you to fill in using your editor.^^J%
  223. \else
  224. INITEX should only be used for reporting bugs with the LaTeX2e^^J%
  225. installation procedure. If you have a working copy of LaTeX2e,^^J%
  226. please use that to generate the report.
  227. \fi}
  228.  
  229. \ifinteractive
  230. \message{Interactive session (y/n) ? }
  231. \read\m@ne to \answer
  232.  
  233. \ifx\answer\xpar
  234.    \def\answer{n}
  235. \fi
  236.  
  237. %%
  238. %% Allow anything begining with `y' or `Y' for yes.
  239. %%
  240. \edef\answer{\uccode`\expandafter\@car\answer\@nil}
  241. \ifnum \answer=`Y \else\interactivefalse\fi
  242. \else
  243. \def\answer{`\N}
  244. \fi
  245.  
  246. %%
  247. %% Header in the msg file.
  248. %%
  249. \wmsg*{^^J%
  250.  LaTeX2e bug report.^^J%
  251. \ifnum \answer=`Y Generated \else Template generated \fi
  252.  by latexbug.tex on \number\year/\two@digits\month/\two@digits\day^^J%
  253. ^^J%
  254.  Reports may be submitted by email to latex-bugs@uni-mainz.de^^J%
  255.  ============================================================}
  256.  
  257. \ifinteractive
  258. %%
  259. %% if interactive, \wread reads a line (verbatim) and write it to the
  260. %% .msg file, until a blank line is entered.
  261. %%
  262.   \typeout{^^J%
  263.     The answer to each question may take several lines.^^J%
  264.     (Each line will be prompted by =>.)^^J%
  265.     Typing a blank line terminates the current answer.}
  266.   \def\wread{{\catcode`\^^I=12
  267.   \let\do\@makeother\dospecials
  268.   \message{=> }\read\m@ne to \answer
  269.   \ifx\answer\xpar\else
  270.     \immediate\write\msg{\answer}
  271.     \expandafter\wread
  272.   \fi}}
  273. \else
  274. %%
  275. %% If non-interactive, \wread just writes a blank line to the .msg file,
  276. %% and \wmsg does not write to the terminal.
  277. %%
  278.   \def\wread{\wmsg{}}
  279. \fi
  280.  
  281. %%
  282. %% \copytomsg copies the contents of a file into the .msg file.
  283. %% (at least it does it as well as TeX can, so there may be
  284. %% transcription problems with 8-bit characters).
  285. %%
  286.  
  287. \chardef\inputfile=15
  288.  
  289. \def\copytomsg#1{{%
  290.    \def\do##1{\catcode`##1=11}%
  291.    \dospecials
  292.    \openin\inputfile#1
  293.    \@copytomsg
  294.    \closein\inputf