LaTeX ドキュメントのプリアンブルでは、コマンドは処理されますが、出力につながるすべてのものがエラーにつながりますMissing \begin{document}
。
\documentclass{article}
This leads to an error.
\begin{document}
\end{document}
環境ではtikzpicture
、tikz コマンドとして解釈できないものはすべて無視されます。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
Something that is ignored
\node {A};
Something that is ignored
\end{tikzpicture}
\end{document}
質問:同様の効果を、例えば専用環境内で実現する最も簡単な方法は何でしょうか? 例えば、次の文書
\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}
残りの部分を処理している間、その文について文句を言うSomething to ignore
か無視するかのどちらかにする必要があります。
答え1
Enrico のコメントによると、 に切り替えることで出力を抑制できます\nullfont
。
\newenvironment{IgnoreUnknownStuff}{\nullfont}{}
Missing character: There is no S in font nullfont!
これにより、ログ ファイルのような警告が生成されますが、 を設定することで抑制できます\tracinglostchars=0
。無視された内容によって、hmode の開始と終了、および行末へのスペースの追加が原因で、余分な垂直方向と水平方向のスペースが残る可能性があります。そのため、無視された内容が完全に見えなくなるわけではありません。
LaTeX 形式がプリアンブル内の文字に対して行うのと同様に、無視されたものに対してエラー メッセージを発行するには、 を\everypar
設定して hmode に入るときにエラーを生成するためにを使用できます\everypar{\ErrorUnknownStuff}
。無視される文字が予想される場合は常に、TeX が vmode になっていることを確認する必要があります。以下のコマンドに注意してください\par
。
\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}}
\everypar
hmode に入る前に、意図的に によって元に戻す必要があります\everypar{}
。上記の定義では、\paragraph
暗黙的にこれを行いますが、 の定義では、\C
明示的に行う必要があります。
左の画像は、以下のコードの結果です。環境内の 4 つの ignore-and-complain-lines のそれぞれに対してエラーが発行されますFlagUnknownStuff
。右の画像は、無視する行をすべて削除したときの出力です。間隔の違いに注意してください。
\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}