Tikz, подрисунок и подпись

Tikz, подрисунок и подпись

Я пытаюсь нарисовать несколько узлов рядом с помощью tikz, подписать их, но это просто не работает с моим кодом. Я использую пакет: caption, subcaption, tikz (узлы).

\usepackage[utf8]{inputenc}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{tikz}
\usetikzlibrary{matrix, arrows, knots}
\usepackage{graphicx}

\begin{document}
  \begin{figure}
    \begin{subfigure}[b]{0.45\textwidth}
      \centering
        \resizebox{\linewidth}{!}{           
          \begin{tikzpicture}
            \foreach \brk in {0,1,2} {
            \begin{scope}[rotate=\brk * 120]
            \node[knot crossing, transform shape,
            inner sep=1.5pt] (k\brk) at (0,-1) {};
            \end{scope}
            }
            \foreach \brk in {0,1,2} {
            \pgfmathparse{int(Mod(\brk - 1,3))}
            \edef\brl{\pgfmathresult}
            \draw[thick,red] (k\brk) .. controls (
            k\brk.4 north west) and (k\brl.4 north east) .. (k\brl.center);
            \draw[thick,red] (k\brk.center) .. controls (k\brk.16 south west) and (k\brl.16 south east) .. (k\brl);
            }
        \end{tikzpicture}
      }
    \caption{Trefoil}
    \label{a}
   \end{subfigure}
   \begin{subfigure}[b]{0.45\textwidth}
      \centering
        \resizebox{\linewidth}{!}{ 
          \begin{tikzpicture}
            \def\foil{3}
            \foreach \brk in {1,...,\foil} {
            \begin{scope}[rotate=\brk * 360/\foil]
            \node[transform shape, knot crossing, inner sep=1.5pt] (k\brk) at (0,-1) {};
            \end{scope}
            }
            \draw[thick,red] (0,0) \foreach \brk in {1,...,\foil} {let \na=\brk, \nb={int(Mod(\brk,\foil)+1)}, \nc={int(Mod(\brk+1,\foil)+1)} in (k\na) .. controls (k\na.16 south east) and (k\nb.16 south west) .. (k\nb.center) .. controls (k\nb.4 north east) and (k\nc.4 north west) .. (k\nc)};
          \end{tikzpicture}
        }
        \caption{Cinquefoil}
        \label{b}
      \end{subfigure}
    \end{figure}
  \caption{Examples of knots} 
  \end{figure}
\end{document}

решение1

Как упоминалось в комментариях, в вашем коде есть несколько ошибок: нет класса документа, лишний \end{figure}, неправильное использование letсинтаксиса PGF и отсутствие включения calcбиблиотеки, которая для этого требуется. (Вы включаете несколько вещейнет(Необходимо для компиляции вашего примера, но пропустите несколько необходимых.)

Тем не менее, как только эти ошибки исправлены, обе фигуры, похоже, изменили размер одинаково. Действительно, они выглядят идентичными.

Моя лучшая догадка заключается в том, что вы продолжаете компиляцию, несмотря на ошибки с предсказуемо нежелательными результатами. Даже предупреждения не следует просто игнорировать. Ошибки нужно исправлять. TeX сообщает вам, что что-то пошло не так, и он не может понять, что делать. Как правило, он попытается что-то сделать, если вы настаиваете, но это не направлено на создание предполагаемого вывода. Это направлено на возможное предоставление полезной информации для целей отладки.

узлы

\documentclass{article}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{tikz}
\usetikzlibrary{knots,calc}
\begin{document}
\begin{figure}
  \begin{subfigure}[b]{0.45\textwidth}
    \centering
    \resizebox{\linewidth}{!}{
      \begin{tikzpicture}
        \foreach \brk in {0,1,2} {
          \begin{scope}[rotate=\brk * 120]
            \node[knot crossing, transform shape,
            inner sep=1.5pt] (k\brk) at (0,-1) {};
          \end{scope}
        }
        \foreach \brk in {0,1,2} {
          \pgfmathparse{int(Mod(\brk - 1,3))}
          \edef\brl{\pgfmathresult}
          \draw[thick,red] (k\brk) .. controls (
          k\brk.4 north west) and (k\brl.4 north east) .. (k\brl.center);
          \draw[thick,red] (k\brk.center) .. controls (k\brk.16 south west) and (k\brl.16 south east) .. (k\brl);
        }
      \end{tikzpicture}
    }
    \caption{Trefoil}
    \label{a}
  \end{subfigure}
  \begin{subfigure}[b]{0.45\textwidth}
    \centering
    \resizebox{\linewidth}{!}{
      \begin{tikzpicture}
        \def\foil{3}
        \foreach \brk in {1,...,\foil} {
          \begin{scope}[rotate=\brk * 360/\foil]
            \node[transform shape, knot crossing, inner sep=1.5pt] (k\brk) at (0,-1) {};
          \end{scope}
        }
        \draw[thick,red] (0,0) \foreach \brk in {1,...,\foil} {let \n0=\brk, \n1={int(Mod(\brk,\foil)+1)}, \n2={int(Mod(\brk+1,\foil)+1)} in (k\n0) .. controls (k\n0.16 south east) and (k\n1.16 south west) .. (k\n1.center) .. controls (k\n1.4 north east) and (k\n2.4 north west) .. (k\n2)};
      \end{tikzpicture}
    }
    \caption{Cinquefoil}
    \label{b}
  \end{subfigure}
\caption{Examples of knots}
\end{figure}
\end{document}

Связанный контент