So ignorieren oder kennzeichnen Sie Dinge außerhalb von Umgebungen und Befehlen

So ignorieren oder kennzeichnen Sie Dinge außerhalb von Umgebungen und Befehlen

In der Präambel eines LaTeX-Dokuments werden Befehle verarbeitet, aber alles, was zu einer Ausgabe führen würde, führt zum Fehler Missing \begin{document}.

\documentclass{article}
This leads to an error.
\begin{document}
\end{document}

In einer tikzpictureUmgebung wird alles ignoriert, was nicht als Tikz-Befehl interpretiert werden kann.

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  Something that is ignored
  \node {A};
  Something that is ignored
\end{tikzpicture}
\end{document}

Frage:Wie kann man am einfachsten einen ähnlichen Effekt erzielen, beispielsweise in einer dedizierten Umgebung? Das Dokument

\documentclass{article}
\newenvironment{IgnoreOrFlagUnknownStuff}{}{}% ??? to be defined
\newenvironment{A}{\paragraph{A:}}{}
\newcommand\B[1]{\paragraph{B:} #1\par}
\begin{document}
\begin{IgnoreOrFlagUnknownStuff}
  Something to ignore or to complain about.
  \begin{A}
    This is OK.
  \end{A}
  Something to ignore or to complain about.
  \B{This is also OK.}
  Something to ignore or to complain about.
\end{IgnoreOrFlagUnknownStuff}
\end{document}

sollte sich entweder über die Something to ignoreSätze beschweren oder sie ignorieren, während der Rest verarbeitet wird.

Antwort1

Laut Enricos Ausführungen kann man die Ausgabe durch Umschalten auf unterdrücken \nullfont.

\newenvironment{IgnoreUnknownStuff}{\nullfont}{}

Dies erzeugt Warnungen wie Missing character: There is no S in font nullfont!in der Protokolldatei, die durch die Einstellung unterdrückt werden können \tracinglostchars=0. Die ignorierten Dinge können dennoch zu zusätzlichem vertikalen und horizontalen Platz führen, wahrscheinlich aufgrund des Aufrufens und Verlassens des Hmode und des Hinzufügens von Leerzeichen am Ende der Zeilen, sodass die ignorierten Dinge nicht vollständig unsichtbar werden.

Um eine Fehlermeldung für ignorierte Dinge auszugeben, wie es das LaTeX-Format für Zeichen in der Präambel tut, kann man \everypardurch Setzen von einen Fehler beim Eintritt in den hmode erzeugen \everypar{\ErrorUnknownStuff}. Man muss sicherstellen, dass TeX im vmode ist, wenn ignorierte Zeichen zu erwarten sind; beachten Sie die \parfolgenden Befehle.

\newenvironment{FlagUnknownStuff}%
  {\everypar{\ErrorUnknownStuff}%
   \nullfont
   \par
   \tracinglostchars=0
  }{}
\newcommand\ErrorUnknownStuff{\GenericError{}{Unknown Stuff}{}{}}
% Commands and environments that may appear in the environment
\newenvironment{A}{\normalfont\paragraph{A:}}{\par}
\newcommand\B[1]{{\normalfont\paragraph{B:} #1\par}}
\newcommand\C[1]{{\everypar{}\normalfont #1\par}}

\everyparmuss von rückgängig gemacht werden, \everypar{}bevor der hmode absichtlich aufgerufen wird. In den obigen Definitionen \paragraphgeschieht dies implizit, aber die Definition von \Cmuss dies explizit tun.

Das linke Bild ist das Ergebnis des untenstehenden Codes. Für jede der vier Ignorier- und Beschwerdezeilen in der Umgebung wird ein Fehler ausgegeben FlagUnknownStuff. Das Bild rechts ist die Ausgabe beim Entfernen aller zu ignorierenden Zeilen. Beachten Sie die Unterschiede im Abstand.

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

\documentclass{article}
\newenvironment{IgnoreUnknownStuff}{\nullfont}{}
\newenvironment{FlagUnknownStuff}%
  {\everypar{\ErrorUnknownStuff}%
   \nullfont
   \par
   \tracinglostchars=0
  }{}
\newcommand\ErrorUnknownStuff{\GenericError{}{Unknown Stuff}{}{}}
% Commands and environments that may appear in the environment
\newenvironment{A}{\normalfont\paragraph{A:}}{\par}
\newcommand\B[1]{{\normalfont\paragraph{B:} #1\par}}
\newcommand\C[1]{{\everypar{}\normalfont #1\par}}
\begin{document}
Before.
\begin{IgnoreUnknownStuff}
  Something to ignore.
  \begin{A}
    This is OK.
  \end{A}
  Something to ignore.
  \B{This is also OK.}%
  Something to ignore.
  \C{This also.}
  Something to ignore.
\end{IgnoreUnknownStuff}
In-between.
\begin{FlagUnknownStuff}
  Something to ignore and to complain about.
  \begin{A}
    This is OK.
  \end{A}
  Something to ignore and to complain about.
  \B{This is also OK.}
  Something to ignore and to complain about.
  \C{This also.}
  Something to ignore and to complain about.
\end{FlagUnknownStuff}
After.
\end{document}

verwandte Informationen