議論を移動することに関する説明

議論を移動することに関する説明

latex2eの使用について読んでいました\protect。セクション 13.8 では、動的な議論の例として「tabularおよびarray環境内の表現」について言及されています。これには少し驚きました。ここで何を意味しているのか、誰か明確に説明してもらえますか? または、なぜそうなるのでしょうか?

私は次のような実験をしてみました

\documentclass{article}
\usepackage{etoolbox}

\makeatletter

\newcommand\ae@suchthat{\mid}
\newcommand\set[1]{%%
  \begingroup
    \let\suchthat\ae@suchthat
      \{\,#1\,\}%%
  \endgroup
}

\makeatother

\begin{document}

\begin{tabular}{lc}
This & $\set{x\in X \suchthat x>42}$
\end{tabular}

\end{document}

しかし、ここでは問題はないようです。脆弱と堅牢について何を誤解しているのでしょうか?

答え1

マニュアルでは、Leslie Lamport による公式マニュアルと一致するように、「 および の -式」について言及する必要があります。@次に例を示します。tabulararray

\documentclass{article}
\usepackage{graphicx}
\begin{document}

\begin{tabular}{l@{ \resizebox{2mm}{!}{$x$} }l}
A & B \\
C & D
\end{tabular}
\end{document}

引数を移動する際のコマンドが脆弱なため、典型的なエラー メッセージが表示されます。

! Use of \@array doesn't match its definition.
\@ifnextchar ... \reserved@d =#1\def \reserved@a {
                                                  #2}\def \reserved@b {#3}\f...
l.5 ...in{tabular}{l@{ \resizebox{2mm}{!}{$x$} }l}

使用すれば\protect\resizeboxエラーは発生しません。

「LaTeX、文書作成システム」168ページより引用:

C.1.3 脆弱なコマンド

コマンドは、次のいずれかに分類されます。屈強そして壊れやすい. [...] 以下は、移動引数を持つすべてのコマンドと環境です。

  • [...]

  • または環境内。(はコマンドではありませんが、-expression 内の脆弱なコマンドは、@移動引数内にあるかのように 'ed される必要があります。)arraytabular@@\protect

関連情報