Bitte nur TeX-Antworten, die sich aus dem TeXbook ableiten lassen. Ich habe mir einen logischen Schalter erstellt, der es ermöglicht, in einem Befehl Anwendungsbereiche anzugeben. Je nach aktuellem Modus entscheidet der Befehl, ob er angewendet werden darf oder nicht. Kann man diesen logischen Schalter verbessern und wenn ja, wie? Open in writeLaTeX
%texmodes Anwendungsbereiche f\"ur Befehle definieren.\vskip\baselineskip \newcount\texmodes \def\texmode[#1]{\texmodes=#1} \def\test{ \def\testbefehl{Ausf\"uhren } \def\fehler{Nicht ausf\"uhrbar } \ifnum\texmodes=0 \texmodes=0 \fi \ifnum\texmodes=1 \texmodes=1 \fi \ifnum\texmodes=2 \texmodes=1 \fi \ifnum\texmodes=3 \texmodes=0 \fi \ifnum\texmodes=4 \texmodes=0 \fi \ifnum\texmodes=0 \testbefehl\vskip\baselineskip\else\fehler\vskip\baselineskip\fi } \texmode[0] Mode=\the\texmodes \test \texmode[1] Mode=\the\texmodes \test \texmode[2] Mode=\the\texmodes \test \texmode[3] Mode=\the\texmodes \test \texmode[4] Mode=\the\texmodes \test %texmodes \bye gefragt 20 Sep '14, 00:09 ctansearch gast3 |
Mit Open in writeLaTeX
%texmodes Anwendungsbereiche f\"ur Befehle definieren.\vskip\baselineskip \newcount\texmodes \def\texmode[#1]{\texmodes=#1} \def\test{ \def\testbefehl{Ausf\"uhren } \def\fehler{Nicht ausf\"uhrbar } \texmodes=\ifcase\texmodes 0\or 1\or 1\or 0\or 0\fi\relax \ifnum\texmodes=0 \testbefehl\vskip\baselineskip \else \fehler\vskip\baselineskip \fi } \texmode[0] Mode=\the\texmodes \test \texmode[1] Mode=\the\texmodes \test \texmode[2] Mode=\the\texmodes \test \texmode[3] Mode=\the\texmodes \test \texmode[4] Mode=\the\texmodes \test %texmodes \bye beantwortet 21 Sep '14, 18:34 Henri |
Falls man nicht möchte, dass Open in writeLaTeX
% texmodes Anwendungsbereiche f\"ur Befehle definieren.\vskip\baselineskip \newcount\texmodes \def\texmode[#1]{\texmodes=#1} \def\test{% \def\testbefehl{Ausf\"uhren } \def\fehler{Nicht ausf\"uhrbar } \ifodd\ifcase \texmodes 0 \or 1 \or 1 \or 0 \or 0 \or 1 \fi \testbefehl \else \fehler \fi \vskip\baselineskip } \texmode[0] Mode=\the\texmodes \test \texmode[1] Mode=\the\texmodes \test \texmode[2] Mode=\the\texmodes \test \texmode[3] Mode=\the\texmodes \test \texmode[4] Mode=\the\texmodes \test %texmodes \bye Ich verwende in diesem Fall ein Leerzeichen an Stelle von beantwortet 22 Sep '14, 09:06 gast3 Kurzinfo für die Theoretiker: Ich habe es so gelöst, daß ich innerhalb einer Gruppe am Anfang texmode=x (spezifische Gruppe), am Ende der Gruppe texmode=0 (allgemeine Gruppe) eingebe. Am Ende einer Gruppe wird immer der "offene" Modus 0 geschaltet. Es gibt also Umgebungen, (z.B Tabellen) die sich als Gruppe x definieren, und untergeordnete Befehle, z.B. Fußnoten) die sich als gruppenabhängig definieren. Ein Befehl, der nicht die Bedingung x erfüllt, kann in der Gruppe x nicht ausgeführt werden, in der Gruppe texmode=0 jederzeit. Ifcase (Gruppenmengen) ist noch nicht umgesetzt. Danke bis hier.
(23 Sep '14, 00:45)
ctansearch
Forts. Dazu gibt es eine "failnotes"-Funktion, die am Ende jeder Gruppe anzeigt, welche Befehle nicht ausgeführt werden konnten, also am Ende von sections oder am Ende von Tabellen etc. Die Fehlermeldungen werden in der Ausgabedatei aufgeführt.
(23 Sep '14, 00:48)
ctansearch
|
\ifcase
wäre hier viel kürzer.