Wie kann ich Befehlsdefinitionen verbatim in eine temporäre Datei exportieren und verbatim reimportieren?
So, hier mal ein TeX-Frage, bitte keine LaTeX-Lösungen anbieten.
Ich habe eine Funktion texnewdef, die Kommentare und Befehle verwaltet, in eine externe Datei schreibt und diese wieder einliest. Nun möchte ich, daß die eigentliche Befehlsdefintion (def{....}) verbatim in die externe Datei exportiert wird und auch verbatim wieder eingelesen wird. (im Sorry, Code erkennbar durch %kern der frage). Dies soll vollständig in der Auslagerungsdatei stattfinden, weil nicht darstellbar, versuche es eine unbegrenzte Anzahl an Befehlen betrifft, also nicht verbatim pro Befehl, sondern als fortlaufende Funktion. Wie wäre das zu machen?
%ttverbatim (Aus TexBook)
\outer\def\begindisplay{\obeylines\startdisplay}
{\obeylines\gdef\startdisplay#1
{\catcode`\^^M=5$$#1\halign|\bgroup\indent##\hfil&&\qquad##\hfil\cr}}
\outer\def\enddisplay{\crcr\egroup$$}
\chardef\other=12
\def\ttverbatim{\begingroup \catcode`\\=\other \catcode`\{=\other
\catcode`\}=\other \catcode`\$=\other \catcode`\&=\other
\catcode`\#=\other \catcode`\%=\other \catcode`\~=\other
\catcode`\_=\other \catcode`\^=\other
\obeyspaces \obeylines \tt}
{\obeyspaces\gdef {\ }} % \obeyspaces now gives \ , not \space|
\outer\def\begintt{$$\let\par=\endgraf \ttverbatim \parskip=0pt
\catcode`\|=0\rightskip=-5pc \ttfinish}{\catcode`\|=0 \catcode`|\=\other %
|obeylines % end of line is active|
|gdef|ttfinish#1^^M#2\endtt{#1|vbox{#2}|endgroup$$}}
\catcode`\|=\active
{\obeylines\gdef|{\ttverbatim\spaceskip=\ttgl\"u\let^^M=\ \let%
|=\endgroup}}
%%ttverbatim (Aus TexBook)
%manual Eine Auslagerungsdatei für Hilfetexte, die später wieder
%%eingelesen wird. Wird in \texnewdef benutzt, muss also vorher definiert sein
%%und darf in \texnewdef nicht verändert werden.
\newcount\texcomnum%Zähler für Kommandos
\newwrite\texmanual%
\immediate\openout\texmanual=\jobname.man%
\def\texdisplaymanual{\vskip1\baselineskip BEFEHLSREFERENZ von \jobname.tex%
\vskip2\baselineskip\immediate\closeout\texmanual \input \jobname.man \vfill}%
%%end manual
%texnewdef
%Befehl zur Neudefinition von Kommandos vergleichbar \newcommand
\long\def\texnewdef[#1,#2]#3{\advance\texcomnum by 1%
\immediate\write\texmanual{\the\texcomnum. #1: {#2}\vskip0.1\baselineskip%
%kern der frage
{\tt Hier soll die Befehlsdefintion in verbatim (wie oben) erscheinen} \vskip1\baselineskip
%kern der frage
}%
#3}%
%%endtexnewdef Befehl zur Neudefinition von Kommandos
Befehlsdefinitionen:
\begintt
\def\slanted[#1]{{\sl #1}}
\endtt
\begintt
\def\bold[#1]{{\bf #1}}
\endtt
\texnewdef[slanted, Formatiert den ersten Parameter als slanted]{
\def\slanted[#1]{{\sl #1}}
}%endtexnewdef
%%endtexnewdef Befehl zur Neudefinition von Kommandos
\texnewdef[bold, Formatiert den ersten Parameter als bold]{
\def\bold[#1]{{\bf #1}}
}%endtexnewdef
Anwendung im Text
\slanted[Slanted text]
\bold[Bold text]
\texdisplaymanual
\bye
nochmal