Current File : //usr/share/texlive/texmf-dist/doc/latex/koma-script/komabug.tex |
% ======================================================================
% komabug.tex
% Copyright (c) Markus Kohm, 1995-2009
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
% This work may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, version 1.3c of the license.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later and of this work.
%
% This work has the LPPL maintenance status "author-maintained".
%
% The Current Maintainer and author of this work is Markus Kohm.
%
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% komabug.tex
% Copyright (c) Markus Kohm, 1995-2009
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
% Die neuste Version dieser Lizenz ist
% http://www.latex-project.org/lppl.txt
% und Version 1.3c ist Teil aller Verteilungen von LaTeX
% Version 2005/12/01 oder spaeter und dieses Werks.
%
%
% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
% (allein durch den Autor verwaltet).
%
% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
%
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
%%
%% @ is a letter
%%
\catcode`\@=11
%%
%% Grab the initex file list
%%
%% If this file is called via
%% latex "\input{latexbug}" or some
%% similar command sequence rather than
%% latex latexbug
%% then the debugging info in \reserved@a will already have been lost.
%% This might not matter, but if it does we may ask the user to resubmit
%% the report.
\ifx\reserved@b\@undefined
\ifx\reserved@a\@gobble
\def\@inputfiles{NONE}
\else
\let\@inputfiles\reserved@a
\fi
\else
\def\@inputfiles{LOST}
\fi
%%
%% Output stream to produce the bug report template.
%%
\newif\ifinteractive\interactivetrue
\newwrite\@msg
\immediate\openout\@msg=\jobname.msg
\immediate\write\@msg{%
An fatal error occured before writing anything to the message file.^^J%
You should have a look at \jobname.log to see the reason of the error.^^J%
^^J%
Maybe you didn't use an interactive terminal to run ``latex komabug''.^^J%
At this case you should try an interactive terminal or add^^J%
\space\space\space\space\string\interactivefalse^^J%
to your local ``komabug.cnf'' to create an empty message.^^J%
You have to edit that message file after creating the empty message.^^J%
}
\immediate\closeout\@msg\let\msg\m@ne
%%
%% We have no end line char (so we have no paragraphs)
%%
\endlinechar=-1
%%
%% Check that LaTeX2e is being used.
%%
\ifx\undefined\newcommand
\newlinechar`\^^J%
\immediate\write17{^^J%
You must use LaTeX2e to generate the bug report!^^J^^J%
Sie muessen LaTeX2e verwenden, um die Fehlermeldung zu erzeugen!}%
\let\relax\end
\else
\def\@tempa{LaTeX2e}\ifx\@tempa\fmtname\else
\immediate\write17{^^J%
You must use LaTeX2e to generate the bug report!^^J^^J%
Aeltere Versionen von LaTeX werden nicht unterstuetzt.^^J%
Sie muessen LaTeX2e verwenden, um die Fehlermeldung zu erzeugen!}%
\let\relax\@@end
\fi\fi
%%
%% \wmsg writes to the terminal, and the .msg file
%% \wmsg* just writes to the .msg file
%% \typeout just writes to the terminal
%%
\def\wmsg{%
\ifnum\msg<0\relax\let\msg\@msg\immediate\openout\msg=\jobname.msg\fi
\begingroup
\@ifstar {\interactivefalse\@wmsg}{\@wmsg}
}
\def\@wmsg#1{%
\ifinteractive\immediate\write17{#1}\fi%
\immediate\write\msg{#1}%
\endgroup
}
%%
%% Prompt for an answer from the user, if the answer is not
%% provided by the cfg file.
%%
\def\readifnotknown#1{%
\@ifundefined{#1}%
{{\message{#1> }%
\catcode`\^^I=12 \let\do\@makeother\dospecials
\global\read\m@ne t\expandafter o\csname#1\endcsname}}%
{\message{\csname#1\endcsname}}}
%%
%% Get number
%% #1 = message
%% #2 = max value
%% --> \answer
%%
\def\scannumber#1{\@tempswatrue
\typeout{`#1'}%
\def\@tempa{\expandafter\@scannumber\expandafter0#1\@nil}%
\edef\@tempa{\@tempa}%
\count@\@tempa\relax
\if@tempswa\else\count@\z@\relax\fi
}%
\def\@scannumber#1{%
\ifx\@nil#1\else
\if 0#1#1\else
\ifnum 0<0#1 #1\else
\noexpand\@tempswafalse%
\fi
\fi
\expandafter\@scannumber
\fi
}%
\def\ReadNumber#1#2{%
\typeout{#1}%
\ifenglish
\message{Input the corresponding number between 1 and #2: }%
\else
\message{Geben Sie die betreffende Zahl zwischen 1 und #2 ein: }%
\fi
\count@=\z@\relax
\read\m@ne to \answer
\scannumber{\answer}%
\ifnum\count@>\number#2\relax
\count@=\z@\relax
\fi
% \typeout{\the\count@ > 0?}%
\ifnum\count@>\z@\relax
% \typeout{YES}%
\advance\count@ by \m@ne
\edef\answer{\the\count@}%
\message{^^J}%
\else
% \typeout{NO}%
\ifenglish
\typeout{Value not valid!}%
\else
\typeout{Wert nicht im erlaubten Bereich!}%
\fi
\pause
\def\@tempa{\ReadNumber{#1}{#2}}%
\expandafter\@tempa
\fi
}
%%
%% Get Yes or No
%% #1 Question
%% --> \if@tempswa (yes is true, no is false)
%%
\def\ReadYesNo#1{%
\typeout{#1}%
\ifenglish
\message{Answer `yes' or `no': }%
\read\m@ne to \answer
\else
\message{Antworten Sie bitte mit `ja' oder `nein': }%
\read\m@ne to \answer
\edef\answer{\uccode`\expandafter\@car\answer\@nil}
\ifnum \answer=`J \def\answer{\uccode`Y}\fi
\fi
\def\@tempa{\message{^^J}}%
\ifnum \answer=`Y \@tempswatrue
\else
\ifnum \answer=`N \@tempswafalse
\else
\ifenglish
\typeout{Answer not valid!}%
\else
\typeout{Antwort unverstaendlich!}%
\fi
\def\@tempa{\ReadYesNo{#1}}%
\fi
\fi
\@tempa
}
%%
%% Pause so messages do not scroll off screen.
%%
\def\pause{%
\ifinteractive
\ifenglish
\message{Press <return> to continue. }%
\else
\message{Mit der <Return>-Taste geht es weiter. }%
\fi
\read\m@ne to \@tempa
\message{^^J}%
\fi
}
%%
%% german or english report generator
%%
\newif\ifenglish\englishfalse
%%
%% Opening Banner.
%%
\InputIfFileExists{komabug.cfg}{%
\ifenglish
\typeout{** using komabug.cfg **}%
\else
\typeout{** komabug.cfg wird verwendet **}%
\fi
}{}
\ifenglish
\typeout{^^J%
============================================================^^J%
^^J%
KOMA bug report generator^^J%
=========================^^J%
Running this file through LaTeX generates a formular ``\jobname.msg''^^J%
containing a bug report to KOMA-Script bundle.^^J^^J%
* Please use german, if possible.^^J \space
If you're not able to use german, write the report in english.^^J%
* Please write a short report not a large one.^^J%
* Please tell me everything, which may be important.^^J}
\pause
\else
\typeout{^^J%
============================================================^^J%
^^J%
KOMA-Script Fehlermeldungsgenerator^^J%
===================================^^J%
Die Bearbeitung dieser Datei mit LaTeX erzeugt das Formular \jobname.msg,^^J%
um Fehlermeldungen zum KOMA-Script-Paket zu melden.^^J^^J%
* Schreiben Sie Ihre Meldung nach Moeglichkeit in Deutsch.^^J \space
Notfalls ist auch Englisch moeglich.^^J%
* Bitte fassen Sie sich kurz.^^J%
* Bitte halten Sie keine Information zurueck, die moeglicherweise^^J \space
wichtig sein koennte.^^J}%
\typeout{%
If you prefere english, you may write a file ``komabug.cfg'' with\space
contents:^^J\space
\string\englishtrue^^J%
at same folder as ``komabug.tex'' and restart ``latex komabug.tex''.^^J}%
\englishtrue\pause\englishfalse
\fi
%%
%% if \interactivefalse just make a blank template.
%%
\ifinteractive
\ifenglish
\ReadYesNo{%
There are two kinds of using this generator.^^J%
At the interactive mode, you have to answer questions. At the other^^J%
mode an empty formular will be generated, you have to fill using^^J%
an editor.^^J^^J%
Do you want an interactive session?
}%
\else
\ReadYesNo{%
Dieser Generator kann auf zwei Arten verwendet werden.^^J%
Im interaktiven Betrieb, werden Ihnen Fragen zur direkten
Beantwortung^^J%
gestellt. Ansonsten wird ein leeres Formular erzeugt, das Sie dann
mit^^J%
einem Editor ausfuellen muessen.^^J^^J%
Wollen Sie eine interaktive Sitzung?
}%
\fi
\if@tempswa\interactivetrue\else\interactivefalse\fi
\fi
%%
%% Fatal error
%%
\def\fatalerror#1{%
\ifenglish
\errhelp{This error is fatal! You cannot continue.^^J%
You should terminate using `x' and restart ``latex komabug''.}%
\errmessage{#1}%
\else
\errhelp{Dieser Fehler erlaubt keine Fortsetzung der Bearbeitung.^^J%
Sie sollten mit `x' abbrechen und ``latex komabug'' neu starten.}%
\errmessage{#1}%
\fi
\batchmode\csname @@end\endcsname
\fatalerror{#1}%
}
%%
%% Try to get Version
%%
\def\GetFileVersionWithExtend#1#2{%
\def\ProvidesFile##1{\@ifnextchar [{\@P@F}{\@P@F[1996/10/31 ]}}%
\def\@P@F[##1 ##2]{\xdef\komaversion{##1}\csname endinput\endcsname}%
\let\ProvidesClass\ProvidesFile
\let\ProvidesPackage\ProvidesFile
\InputIfFileExists{#1#2}{}{%
\ifenglish
\def\noscrclass{%
! File ``#1#2'' not found!^^J%
! The file must be at the same folder like ``komabug.tex''^^J%
! or must be readable by LaTeX to get the version information!}%
\else
\def\noscrclass{%
! Die Datei ``#1#2'' konnte nicht gefunden werden!^^J%
! Zur Bestimmung der aktuellen Version ist es unbedingt^^J%
! erforderlich, dass diese Datei sich im selben Verzeichnis^^J%
! wie ``komabug.tex'' befindet oder zumindest von LaTeX^^J%
! gefunden werden kann!}%
\fi
\errmessage{\noscrclass}
\ifenglish
\errhelp{Terminate TeX using `x' and restart komabug}
\else
\errhelp{Beenden Sie TeX mit `x' und starten Sie komabug neu}
\fi
}%
}
\def\GetVersion#1{%
\GetFileVersionWithExtend{#1}\@empty
}
\ifinteractive
\ifenglish
\ReadNumber{%
There are several categories, related to several parts and files^^J%
of the KOMA-Script bundle:^^J^^J
1) Installation of KOMA-Script^^J
2) KOMA-Script manual^^J
3) Basics (scrbook, scrreprt, scrartcl, scrlttr2, typearea, scrlfile)^^J
4) Pagestyle definition (scrpage2)^^J
5) Time or date (scrtime, scrdate)^^J
6) Address file handling (scraddr)^^J
7) Obsolete (scrlettr, scrpage)^^J%
}{7}%
\else
\ReadNumber{%
Verschiedene Bereiche werden von diesem Generator unterstuetzt, die^^J%
sich auf verschiedene Dateien im KOMA-Script-Paket beziehen:^^J^^J
1) Auspacken und Installieren von KOMA-Script^^J
2) KOMA-Script-Anleitung^^J
3) Grundfunktion (scrbook, scrreprt, scrartcl, scrlttr2, typearea,
scrlfile)^^J
4) Definition von Seitenstilen (scrpage2)^^J
5) Zeit oder Datum (scrtime, scrdate)^^J
6) Umgang mit Adressdateien (scraddr)^^J
7) Obsoletes (scrlettr, scrpage)^^J%
}{7}%
\fi
\ifcase\expandafter\number\answer
% 1
\def\category{Installation}\GetVersion{scrkernel-version.dtx}
\let\categoryversion\komaversion
\or
% 2
\def\category{Manual}\GetVersion{scrartcl.cls}
\let\categoryversion\komaversion
\or
% 3
\def\category{Basics}\GetVersion{scrartcl.cls}
\let\categoryversion\komaversion
\or
% 4
\def\category{Addons, scrpage2}\GetVersion{scrpage2.sty}%
\let\categoryversion\komaversion\GetVersion{scrartcl.cls}
\or
% 5
\def\category{Addons, scrtime/date}\GetVersion{scrtime.sty}%
\let\categoryversion\komaversion\GetVersion{scrartcl.cls}
\or
% 6
\def\category{Addons, scraddr}\GetVersion{scraddr.sty}%
\let\categoryversion\komaversion\GetVersion{scrartcl.cls}
\or
% 7
\ifenglish
\typeout{These obsolete parts of KOMA-Script are unsupported!^^J%
You should use scrlttr2 instead of scrlettr and scrpage2 instead of
scrpage.}
\else
\typeout{Fuer diese obsoleten Teile von KOMA-Script gibt es keinen
Support mehr!^^J%
Sie sollten scrlttr2 an Stelle von scrlettr bzw. scrpage2 an Stelle
von^^J%
scrpage verwenden.}
\fi
\batchmode\csname @@end\endcsname
\fi
\else% \ifinteractive
\ifenglish
\def\category{<PLEASE REPLACE BY ONE OF `Installation', `Manual',
`Basics', `Addons, scrpage2', `Addons, scrtime/date', `Addons,
scraddr'.>}
\def\categoryversion{<PLEASE REPLACE BY VERSION DATE FROM USED CLASS OR
PACKAGE.>}
\else
\def\category{<BITTE DURCH EINE DER ANGABEN `Installation', `Manual',
`Basics', `Addons, scrpage2', `Addons, scrtime/date', `Addons,
scraddr' ERSETZEN.>}
\def\categoryversion{<BITTE DURCH DAS VERSIONSDATUM AUS DER ENTSPRECHENDEN
KLASSE BZW. DEM ENTSPRECHENDEN PAKET ERSETZEN.>}
\fi
\GetVersion{scrartcl.cls}
\fi
\ifinteractive
\ifenglish
\typeout{^^J%
===========================================================^^J%
^^J%
Please give a one line description (< 50 chars) of your problem.%
^^J^^J%
If your using email for sending the report, please use this^^J%
description as subject, too:%
^^J \@spaces\@spaces\space
|<------------------------------------------------>|}
\else
\typeout{^^J%
============================================================^^J%
^^J%
Bitte eine einzeilige (< 50 Zeichen) Beschreibung des Problems.%
^^J^^J%
Wenn Sie fuer die Meldung eMail verwenden, setzen Sie diese
Beschreibung^^J%
bitte auch als Betreff (`Subject') der eMail ein:%
^^J \@spaces\@spaces\space
|<------------------------------------------------>|}
\fi
\loop
\let\synopsis\relax
\readifnotknown{synopsis}
\ifx\synopsis\@empty
\repeat
\else%\ifinteractive
\ifenglish
\def\synopsis{<PLEASE REPLACE BY SHORT ONE-LINE DESCRIPTION.>}
\else
\def\synopsis{<BITTE DURCH EINE KURZE, EINZEILIGE BESCHREIBUNG ERSETZEN.>}
\fi
\fi
%%
%% Header in the msg file.
%%
\ifenglish
\wmsg*{^^J%
KOMA bug report.^^J%
\ifinteractive Interactive \else Formular \fi
generated using komabug.tex at
\space\number\year-\two@digits\month-\two@digits\day.^^J%
^^J
You may send this message to komascript@gmx.info.^^J%
If you do so, please use subject:^^J%
\space KOMA-BUG:\space\synopsis^^J%
============================================================^^J
}
\else
\wmsg*{^^J%
KOMA-Fehlermeldung.^^J%
\ifinteractive Interaktiv \else Formular \fi
erzeugt mit komabug.tex am
\space\number\year-\two@digits\month-\two@digits\day.^^J%
^^J%
Die Meldung kann per E-Mail an komascript@gmx.info^^J%
verschickt werden.^^J%
Bitte verwenden Sie dabei als Betreff:^^J%
\space KOMA-BUG:\space\synopsis^^J%
============================================================^^J
}
\fi
%%
%% Category of bug, obtained earlier but put out now, after the header.
%%
\wmsg{>Bereich: \category}
\wmsg{>Version: \categoryversion}
%%
%% synopsis of bug, obtained earlier but put out now, after the header.
%%
\wmsg{>Betreff: \synopsis}
\begingroup
\global\let\format\@empty
\gdef\hyphenation{standard}
\def\immediate#1#{\xdef\hyphenation}
\def\typeout#1{\xdef\format{\format#1}}
\the\everyjob
\endgroup
\wmsg{>Format: \format}
\wmsg{>KOMA-Script: \komaversion}
\ifinteractive
%%
%% if interactive, \wread reads a line (verbatim) and write it to the
%% .msg file, until a blank line is entered.
%%
\def\wread{{%
\catcode`\^^I=12
\let\do\@makeother\dospecials
\let\lastanswer\answer
\message{=> }\read\m@ne to \answer
\ifx\lastanswer\@empty
\let\lastanswer\answer
\fi
\ifx\lastanswer\@empty
\else
\immediate\write\msg{\answer}
\expandafter\wread
\fi
}%
}
\else
%%
%% If non-interactive, \wread just writes a blank line to the .msg file,
%% and \wmsg does not write to the terminal.
%%
\def\wread{\wmsg{}}
\fi
%%
%% \copytomsg copies the contents of a file into the .msg file.
%% (at least it does it as well as TeX can, so there may be
%% transcription problems with 8-bit characters).
%%
%% It does a line count, and complains if the test file is
%% too large.
\chardef\inputfile=15
\newcount\linecount
\def\copytomsg#1{{%
\endlinechar=-1
\def\do##1{\catcode`##1=11}%
\dospecials
\global\linecount\z@
\openin\inputfile#1\relax
\def\thefile{#1}%
\@copytomsg
\closein\inputfile}}
\def\@copytomsg{%
\ifeof\inputfile
\typeout{*** \thefile\space Zeilen = \the\linecount}
\else
\global\advance\linecount\@ne
\read\inputfile to \inputline
\ifx\inputline\@empty
\wmsg*{}
\else
\wmsg*{\inputline}
\fi
\expandafter\@copytomsg
\fi}
%%
%% Test the age of the current format.
%%
\def\getage#1/#2/#3\@nil{%
\count@\year
\advance\count@-#1\relax
\multiply\count@ by 12\relax
\advance\count@\month
\advance\count@-#2\relax}
%
\expandafter\getage\fmtversion\@nil
%%
%% \count@ should now be the age of the format in months.
%%
\ifnum\count@>24
\ifenglish
\def\oldformat{^^J%
! Your LaTeX installation is older than two years.^^J%
! Updating woul dbe a good idea before sending this report.^^J%
! You should compare the date of the package with the date of^^J
! the used LaTeX version. If LaTeX is more than two years older^^J
! than KOMA-Script, this could be the reason of the problem.}
\errhelp{If you want to continue, press <return>.}
\else
\def\oldformat{^^J%
! Ihre LaTeX-Installation ist ueber zwei Jahre alt.^^J%
! Bitte denken Sie ueber ein Update nach, ehe Sie diese Meldung^^J%
! abschicken.^^J%
! Vergleichen Sie wenigstens das Datum des Paketes mit dem Datum^^J%
! der LaTeX-Version. LaTeX sollte nicht mehr als zwei Jahre aelter^^J%
! als KOMA-Script sein. Ansonsten koennte der Fehler in einer^^J%
! Unvertraeglichkeit zwischen Format- und Paketversion liegen.}
%%
%% Put the message in a macro to improve the look of the error mesage.
%%
%
\errhelp{Wenn Sie dennoch fortfahren wollen, druecken Sie einfach <Return>.}
\fi
\errmessage{\oldformat}
\fi
%
\expandafter\getage\komaversion\@nil
\ifnum\count@>18
\ifenglish
\def\oldversion{^^J%
! Your KOMA-Script installation is older than one year.^^J%
! You should check for an update, bevor you're sending this message.^^J
! You should compare the date of the package with the date of^^J
! the used LaTeX version. If LaTeX is years younger than KOMA-Script,^^J
! this could be the reason of the problem.}
\errhelp{If you want to continue, press <return>.}
\else
\def\oldversion{^^J%
! Ihre KOMA-Script-Version ist ueber ein Jahr alt.^^J%
! Bitte denken Sie ueber ein Update nach, ehe Sie diese Meldung^^J%
! abschicken.^^J%
! Vergleichen Sie wenigstens das Datum des Paketes mit dem Datum^^J%
! der LaTeX-Version. LaTeX sollte nicht Jahre juenger als KOMA-Script sein.^^J%
! Ansonsten koennte der Fehler in einer Unvertraeglichkeit zwischen^^J%
! Format- und Paketversion liegen.}
\errhelp{Wenn Sie dennoch fortfahren wollen, druecken Sie einfach <Return>.}
\fi
\errmessage{\oldversion}
\fi
%%
%% Now use \wmsg and \wread for each of the multi-line fields
%% in the form. Currently one-line fields use \read directly.
%%
\ifinteractive
\ifenglish
\typeout{^^JYour name:}
\else
\typeout{^^JIhr Name:}
\fi
\readifnotknown{name}
\else
\ifx\name\undefined
\ifenglish
\def\name{<REPLACE THIS BY YOUR NAME>}
\else
\def\name{<GEBEN SIE IHREN NAMEN EIN>}
\fi
\fi
\fi
\ifinteractive
\ifenglish
\typeout{^^JYour address (email if possible):}
\else
\typeout{^^JIhre Adresse (eMail bevorzugt):}
\fi
\readifnotknown{address}
\else
\ifx\address\undefined
\ifenglish
\def\address{<PEPLACE THIS BE YOUR (EMAIL-)ADDRESS>}
\else
\def\address{<GEBEN SIE IHRE (EMAIL-)ADRESSE EIN>}
\fi
\fi
\fi
\ifinteractive
\ifenglish
\typeout{^^JYour computer system (z. B. Atari, Linux, Mac, Win98SE):}
\else
\typeout{^^JDas verwendete Computersystem (z. B. Atari, Linux, Mac, Win98SE):}
\fi
\readifnotknown{computersystem}
\else
\ifx\computersystem\undefined
\ifenglish
\def\computersystem{<REPLACE THIS BY YOUR COMPUTERSYSTEM>}
\else
\def\computersystem{<GEBEN SIE IHR VERWENDETES COMPUTERSYSTEM EIN>}
\fi
\fi
\fi
\wmsg*{>Adresse: \name\space<\address>}
%%
%% >Organisation: is really a GNATS multiline field
%% but we treat it as a one-line field.
%%
\wmsg*{>Organisation: \ifx\organisation\undefined
\ifx\organization\undefined\else
\organization
\fi
\else
\organisation
\fi}
%%
%% Test which format is being used. These fields are completed
%% automatically even if the blank template is being produced.
%%
\wmsg*{>Voraussetzungen:}
\wmsg*{ \string\@TeXversion: \meaning\@TeXversion
\ifx\@TeXversion\@@undefined
\space (Standardeinstellung fuer TeX3.141 und spaeter)\fi}
\wmsg*{ \string\@currdir: \meaning\@currdir}
\wmsg*{ \string\input@path: \meaning\input@path
\ifx\input@path\@@undefined
\space (Standardeinstellung)\fi}
\wmsg*{ System: \computersystem}
\wmsg*{>Beschreibung:}
\ifinteractive
\ifenglish
\typeout{%
Description of your problem:^^J^^J%
\@spaces You can use multiple lines (each is askes by the prompt^^J%
\@spaces ``=>'').^^J%
\@spaces Use two blank lines to finish your answer.}
\else
\typeout{%
Beschreibung des Problems:^^J^^J%
\@spaces Die Beantwortung dieser Frage kann mehrere Zeilen^^J%
\@spaces einnehmen (jede wird durch die Eingabeaufforderung^^J%
\@spaces ``=>'' eingeleitet).^^J%
\@spaces Durch zwei aufeinanderfolgende Leerzeilen wird die^^J%
\@spaces Antwort beenden.}
\fi
\else
\ifenglish
\wmsg{<REPLACE THIS BY YOUR DESCRIPTION OF THE PROBLEM>}
\else
\wmsg{<GEBEN SIE HIER IHRE PROBLEMBESCHREIBUNG EIN>}
\fi
\fi
\wread
%%
%% insertion of the test file
%%
\ifinteractive
\ifenglish
\typeout{^^J%
Name of a short self describing file, which shows the problem^^J%
(file should be as short as possible, not more than 60 lines):^^J^^J%
If the file is not at current directory please enter the hole^^J%
name (directory inclusive), so LaTeX may load it.^^J^^J%
If no testfile exists, because your not reporting a bug at a class^^J%
or package, simply press <return>.}
\else
\typeout{^^J%
Name einer KURZEN, SELBSTERKLAERENDEN Datei, bei der das Problem^^J%
auftritt (die Datei sollte wirklich so kurz wie moeglich sein,^^J%
nicht mehr als 60 Zeilen):^^J^^J%
Damit LaTeX diese Datei einlesen kann, geben Sie bitte den kompletten^^J%
Namen einschliesslich des Verzeichnisses an, falls die Datei nicht im^^J%
aktuellen Verzeichnis zu finden ist.^^J^^J%
Falls Sie keinen Fehler in einer der Klassen oder Pakete melden und^^J%
daher keine Testdatei existiert, druecken Sie einfach <Return>.}
\fi
\message{filename> }\read\m@ne to \filename
\else
\let\filename\@empty
\fi
%%
%% Try to find the .tex file and .log file
%%
\ifx\filename\@empty
\ifinteractive
\ifenglish
\ReadNumber{^^J^^JNo Testfile.^^J^^J%
Three kinds of reports are possible:^^J^^J%
1) SW bug:^^J\@spaces
Software bug, you have to add a test file!^^J
2) DOC bug:^^J\@spaces
Bug at manual or you do not understand the manual.^^J
3) Ask for change:^^J\@spaces
Not a bug, but you'd like a change or simply help.^^J}{3}
\else
\ReadNumber{^^J^^JKeine Testdatei.^^J^^J%
Drei Arten von Meldungen werden unterstuetzt:^^J^^J%
1) SW-Fehler:^^J\@spaces
Software-Fehler, unbedingt eine Testdatei beilegen!^^J
2) DOC-Fehler:^^J\@spaces
Fehler in oder unverstaendliche Anleitung.^^J
3) Aenderungswunsch:^^J\@spaces
Kein Fehler sondern eine Frage nach Aenderung oder Hilfe.^^J}{3}
\fi
\else
\def\answer{0}%
\fi
\else
\def\answer{0}%
\filename@parse\filename
\IfFileExists{\filename}{\edef\samplefile{\filename}%
\IfFileExists{\filename@area\filename@base.log}{%
\edef\logfile{\filename@area\filename@base.log}%
}{%
\IfFileExists{\filename@area\filename@base.lis}{%
\edef\logfile{\filename@area\filename@base.lis}%
}{%
\ifenglish
\typeout{^^J%
Log file ``\filename@area\filename@base.log'' not found.^^J%
Please add the log file at ``\jobname.msg''.}%
\else
\typeout{^^J%
Logdatei ``\filename@area\filename@base.log'' nicht gefunden.^^J%
Bitte ergaenzen Sie das Beispiel in ``\jobname.msg''.}%
\fi
\pause
}%
}%
}{%
\ifenglish
\typeout{^^J%
Test file ``\filename'' not found.^^J%
Please add the test file at ``\jobname.msg''.}
\else
\typeout{^^J%
Beispieldatei ``\filename'' nicht gefunden.^^J%
Bitte ergaenzen Sie das Beispiel in ``\jobname.msg''.}
\fi
\pause
}%
\fi
\ifcase\expandafter\number\answer
\ifinteractive\wmsg{>Unterbereich: SW-Fehler}\fi
\wmsg*{%
Beispieldatei, die das Problem verdeutlicht:^^J%
============================================}
\ifx\samplefile\undefinedcommand
\ifenglish
\typeout{^^J!
Please add test file and log file at your report message!}%
\else
\typeout{^^J!
Bitte ergaenzen Sie Beispiel- und LOG-Datei in der Meldung!}%
\fi
\pause
\ifenglish
\wmsg*{<REPLACE THIS BY YOUR TEST FILE>}
\else
\wmsg*{<HIER TESTDATEI EINFUEGEN>}
\fi
\else
%%
%% The example file goes here:
%%
\copytomsg{\samplefile}
\ifnum\linecount>60
\ifenglish
\typeout{%
^^J%
!!! Your test file has \the\linecount\space lines.^^J%
!!! Large test files make it difficult to find the cause of the
problem:^^J%
!!! ^^J%
!!! Please decrease your test file as much as possible.^^J}
\else
\typeout{%
^^J%
!!! Ihre Testdatei ist \the\linecount\space Zeilen lang.^^J%
!!! So grosse Testdateien erschweren die Ursachenfindung:^^J%
!!! ^^J%
!!! Bitte verkleinern Sie Ihre Testdatei, soweit das ueberhaupt^^J%
!!! moeglich ist, so dass das Problem gerade noch auftritt.^^J}
\fi
\pause
\fi
\fi
\wmsg*{^^J%
LOG-Datei vom LaTeX-Lauf der Beispieldatei:^^J%
===========================================}
\ifx\logfile\undefinedcommand
\ifenglish
\typeout{^^J%
Log file of your test file not found.^^J%
Please add the log file of your test file at ``\jobname.msg''.}
\wmsg*{<REPLACE THIS BY THE LOG OF YOUR TEST FILE>}
\else
\typeout{^^J%
Log-Datei zur Testdatei nicht gefunden.^^J%
Bitte ergaenzen Sie die LOG-Datei in ``\jobname.msg''.}
\wmsg*{<HIER LOG ZUR TESTDATEI EINFUEGEN >}
\fi
\pause
\else
\copytomsg{\logfile}
\fi
\or
\wmsg{>Unterbereich: DOC-Fehler}
\or
\wmsg{>Unterbereich: Aenderungswunsch}
\fi
%%
%% Closing Banner.
%%
\typeout{^^J%
============================================================}
\ifinteractive
\ifenglish
\typeout{^^J%
You may edit file ``\jobname.msg'' for additional changes.}
\else
\typeout{^^J%
Weiteren Aenderungen koennen sie direkt in der Datei^^J%
``\jobname.msg'' mit Hilfe eines Editors vornehmen.}
\fi
\else
\ifenglish
\typeout{^^J%
The formular of the report will be saved to ``\jobname.msg''.^^J%
Please use an editor to replace all information fields, before^^J%
sending it.}
\else
\typeout{^^J%
Das Formular fuer die Erstellung der Meldung wurde in die^^J%
Datei ``\jobname.msg'' geschrieben, die Sie bitte mit Hilfe^^J%
eines Editors ergaenzen, bevor Sie sie abschicken.}
\fi
\fi
\let\ifinteractivetrue\iftrue
\ifenglish
\typeout{^^J%
Please send ``\jobname.msg'' to komascript@gmx.info using subject:^^J%
\@spaces ``KOMA-BUG:\space\synopsis''^^J%
^^J%
Thank you for spending time for a bug report.}
\else
\typeout{^^J%
Wenn Sie ueber eMail verfuegen, so senden Sie ``\jobname.msg''^^J%
bitte an komascript@gmx.info.^^J%
Verwenden Sie dabei bitte als Betreff (Subject):^^J%
\@spaces ``KOMA-BUG:\space\synopsis''^^J%
^^J%
Danke, dass Sie sich die Zeit genommen haben.}
\fi
\wmsg*{^^J%
============================================================^^J
Ende der KOMA-Fehlermeldung.^^J%
============================================================}
%%
%% Close the .msg output stream.
%%
\immediate\closeout\msg
%%
%% This is the TeX primitive \end command.
%%
\@@end
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End: