表示されるすべての数式とインライン数式をボックス化するグローバル設定を作成するにはどうすればよいですか?

表示されるすべての数式とインライン数式をボックス化するグローバル設定を作成するにはどうすればよいですか?

表示されているすべての数式とインライン数式をボックスで囲むグローバル設定を作成する方法がわかりません。ボックスは、色付きのフレーム、色付きの背景、および色付きの前景 (テキストまたは数式) で装飾されています。

グローバル設定を行うことで、簡単にオン/オフを切り替えることができ、残りはそのまま残ります。

と の2 つのマクロがあることはわかっています\everydisplayが、たとえば\everymathを使用してストロークの色を変更する以外に、これらを利用することはできません。\color{red}

答え1

再生するには、次の例のように\fboxインライン数式を周囲に追加します。

\documentclass{article}

\newsavebox{\mymathbox}
\everymath{%
  \mathsurround=0pt$%
  \begin{lrbox}{\mymathbox}\everymath{}$%
  \aftergroup\mathboxend
}
\newcommand*{\mathboxend}{%
  \end{lrbox}%
  \fbox{\usebox{\mymathbox}}%
}

\begin{document}

$abc$ Hello\textsuperscript{World}

\begin{tabular}{l}Hello\\World\end{tabular}

\begin{minipage}{4em}Hello\\World\end{minipage}

\begin{minipage}[t]{4em}Hello\\World\end{minipage}

\end{document}

アップデート:説明と\mathsurround=0pt追加。

目標は次のようなものを持つこと

\fbox{$...$}

が呼び出されると\everymath、すでに数式モードになっています。したがって、最初の が$数式モードを終了します。 によって指定されたスペースは\mathsurround空の式の周囲に設定されるため、ゼロに設定されます。

次に水平ボックス ( lrbox) が開かれ、再び数式モードに切り替わりますが、 は空です\everymath。 を介して、\aftergroup閉じた直後のポイントに到達し$、ボックスを閉じて、 でボックスを設定できます\fbox

変化追加した。

また、数学グループを配置して、lrbox内部に配置することもできます。

\everymath{%
  \begin{lrbox}{\mymathbox}%
  \everymath{}$\mathsurround=0pt\relax
  \aftergroup\mathboxend
}
\newcommand*{\mathboxend}{%
  \end{lrbox}%
  \fbox{\usebox{\mymathbox}}%
  $%
}

これらの方法の違いは、 がゼロでない場合の の処理です\mathsurround。最初のケースでは、スペースはボックスの内側に配置され、2 番目のケースでは、スペースはボックスの外側に配置されます。

ただし、この一般的な方法には重大な欠点があります\everymath。インライン数式はさまざまな場所で使用されるため、例では、インライン数式が期待されない場所にもボックスが表示されています。

\fbox を使用したインライン数式

関連情報