tikz を使用していくつかの結び目を並べて描画し、ラベルを付けようとしていますが、私のコードではうまくいきません。パッケージ caption、subcaption、tikz (knots) を使用します。
\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}
、PGF構文の誤用、必要なライブラリlet
が含まれていないなどです。(いくつかのものが含まれています。calc
ない例をコンパイルするために必要なものですが、いくつか必要なものは省略します。
とはいえ、これらのエラーが修正されると、2 つの図は同じようにサイズ変更されるように見えます。実際、それらは同一に見えます。
私の推測では、予想どおりに望ましくない結果をもたらすエラーにもかかわらず、コンパイルを続行していると思われます。警告であっても、単に無視すべきではありません。エラーは修正する必要があります。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}