TikZ行列ノードに[]、|などを表示する

TikZ行列ノードに[]、|などを表示する

私はTikZを使ってスペクトルシーケンスをタイプセットしたいのですが、この郵便受けしかし、スペクトルシーケンスのエントリには括弧と縦線が含まれています(例:[x|...|x])。 単純に入力すると、ノード全体が空白になります。 どうすればこの問題を回避できますか?

私が使用しているコードは次のとおりです

\documentclass[a4paper,12pt]{article} 
\usepackage{tikz} 
\usetikzlibrary{matrix} 

\begin{document}
\begin{tikzpicture}
  \matrix (m) [matrix of math nodes,
    nodes in empty cells,nodes={minimum width=5ex,
    minimum height=5ex,outer sep=-5pt},
    column sep=1ex,row sep=1ex]{
          0     &   0  &  0  &  \vdots  & \\
          0     &  [x] &  0  &  k   & \\
          0     &   0  &  0  &  \vdots  & \\
          0     &   0  &  0  & |1| & \\
          0     &   0  & []  &  0  & \\
          -2    &  -1  &  0  &     & \\};
\end{tikzpicture}
\end{document}

「|1|」を含む行をコンパイルしようとするとエラーが返されますが、「[x]」は問題にならないようですが、出力には何も表示されません。

答え1

キーmatrix of math nodes(またはmatrix of nodes) を使用する場合、TikZ はアンパサンド間のすべてをノードの内容として解釈します。ただし、私たち (ユーザー) は、多くの場合、ケースバイケースでそれらのノードのスタイルを変更する機能を必要とします。通常の使用では、これはコマンドのパラメーターを介して行われます\node。また、マトリックスがノードをレイアウトする方法を少し変更することをお勧めします。そこで TikZ では、セルで最初に出現する必要がある特別な構文を使用してこれらのことを指定できるようにします。コマンド\nodeとその内容の間には、垂直線のコンテンツが追加されます。したがって、 と記述することで特定のノードを描画でき|[draw]|、 と記述することで明示的に名前を付けることができます|(name)|。さらに、アンパサンドは実際にはオプションの引数を取ることができるコマンドであり、これは行間の余分なスペースに変換されます (最初の行に指定されている場合)。

つまり、角括弧は行スキップとして消費され (最初の行にないため無視されます)、縦線はノード コマンドの仕組みに組み込まれます。それぞれを保護するには、セルの最初の文字が特殊文字でないことを確認する必要があります。内容全体を中括弧で囲むか、{}先頭に を置きます。

両方のバージョンを以下に示します。

\documentclass[a4paper,12pt]{article} 
%\url{http://tex.stackexchange.com/q/68600/86}
\usepackage{tikz} 
\usetikzlibrary{matrix} 

\begin{document}
\begin{tikzpicture}
  \matrix (m) [matrix of math nodes,
    nodes in empty cells,nodes={minimum width=5ex,
    minimum height=5ex,outer sep=-5pt},
    column sep=1ex,row sep=1ex]{
          0     &   0  &  0  &  \vdots  & \\
          0     &  {[x]} &  0  &  k   & \\
          0     &   0  &  0  &  \vdots  & \\
          0     &   0  &  0  & {}|1| & \\
          0     &   0  & {}[]  &  0  & \\
          -2    &  -1  &  0  &     & \\};
\end{tikzpicture}
\end{document}

execute at empty cell={\node {0};}ちなみに、ゼロをすべて入力しなくても済むようにするには、次のようにします。

\documentclass[a4paper,12pt]{article} 
%\url{http://tex.stackexchange.com/q/68600/86}
\usepackage{tikz} 
\usetikzlibrary{matrix} 

\begin{document}
\begin{tikzpicture}
  \matrix (m) [matrix of math nodes,
    execute at empty cell={\node {0};},nodes={minimum width=5ex,
    minimum height=5ex,outer sep=-5pt},
    column sep=1ex,row sep=1ex]{
    &  &  &  \vdots   \\
    &  {[x]} &  &  k  \\
    &   &  &  \vdots  \\
    &   &  & {}|1|  \\
    &   & {}[]  &   \\
  -2    &  -1  & & {} \\};
\end{tikzpicture}
\end{document}

スペクトルシーケンス

関連情報