Неправильное совмещение узлов на подкартинках

Я использую tikz для набора схемы в латексном документе.

У меня есть сетка «сеточных диаграмм», где каждая сеточная диаграмма нарисована как отдельная картинка тикз, а затем размещена в сетке как узлы.

Я хочу нарисовать круговой узел (который в конечном итоге будет содержать метку) в правом нижнем квадрате каждой сеточной диаграммы.

Я использую один и тот же код для каждой сеточной диаграммы, но каждый раз круг рисуется в разных местах.

Я что-то не так делаю, или это ошибка в тикз? В частности, разрешен ли мой подход по включению дополнительных изображений / стандарт / передовой опыт?

См. Изображение здесь.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning}
\usepackage{verbatim}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}%
\begin{document}
\begin{tikzpicture}[scale=1, node distance = .5cm]
  \node (a) at (0,0) {
    \begin{tikzpicture}
     \draw[step=.5cm,gray,very thin] (-0.1,-1.6) grid (1.6, 0.1);
      \node at (1.25, -1.25) [fill=white, shape=circle, draw=black] {};
   \end{tikzpicture}
    };
    \node[right=of a] (b) {
    \begin{tikzpicture}
     \draw[step=.5cm,gray,very thin] (-0.1,-1.6) grid (1.6, 0.1);
      \node at (1.25, -1.25) [fill=white, shape=circle, draw=black] {};
     \end{tikzpicture}
    };
    \node[below=of a] (c) {
    \begin{tikzpicture}
     \draw[step=.5cm,gray,very thin] (-0.1,-1.6) grid (1.6, 0.1);
      \node at (1.25, -1.25) [fill=white, shape=circle, draw=black] {};
     \end{tikzpicture}
    };
    \node[right=of b] (d){
    \begin{tikzpicture}
     \draw[step=.5cm,gray,very thin] (-0.1,-1.6) grid (1.6, 0.1);
      \node at (1.2, -1.5) [fill=white, shape=circle, draw=black] {};
     \end{tikzpicture}
    };
    \node[below=of b] (e){
    \begin{tikzpicture}
     \draw[step=.5cm,gray,very thin] (-0.1,-1.6) grid (1.6, 0.1);
      \node at (1.25, -1.25) [fill=white, shape=circle, draw=black] {};
     \end{tikzpicture}
    };
    \node[below = of c] (f) {
    \begin{tikzpicture}
     \draw[step=.5cm,gray,very thin] (-0.1,-1.6) grid (1.6, 0.1);
      \node at (1.25, -1.25) [fill=white, shape=circle, draw=black] {};
      \end{tikzpicture}
    };
\end{tikzpicture}
\end{document}

person Tom Close    schedule 27.09.2010    source источник
comment
Я не знал, что можно вкладывать тикз картинки. Спасибо за пример!   -  person Faheem Mitha    schedule 07.09.2011


Ответы (1)


Я не уверен, почему круги не выровнены в вашем примере, но это может быть связано с относительным позиционированием с использованием of.

Я не знаю, рекомендуется ли это, но вы можете использовать foreach для автоматизации построения сетки:

\begin{document}
\begin{tikzpicture}[scale=1]
  \foreach \x in {-0.01cm,2.99cm,5.99cm}
    \foreach \y in {-0.01cm,2.99cm,5.99cm} {
      \draw[step=.5cm,gray,thin] (\x,\y) grid +(1.52cm,1.52cm);
      \draw[fill=white, draw=black] (\x,\y) +(1.255cm,0.25cm) circle (0.2cm);
    }
\end{tikzpicture}
\end{document}

alt text

person Steve Tjoa    schedule 27.09.2010
comment
Спасибо. Такое поведение было вызвано "из". Когда я изменил каждый из вышеперечисленных узлов на абсолютное позиционирование (то есть \ node (b) в (3, 0)), изображение отрисовалось идеально, даже с включенными субкартинами tikz. (Каждая сеточная диаграмма в конечном итоге будет отличаться, со стрелками, связывающими их, и я пошел на этот подход в первую очередь, а не на цикл \ foreach.) - person Tom Close; 28.09.2010