나는 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
(여러 가지를 포함합니다.~ 아니다예제를 컴파일하는 데 필요하지만 필요한 몇 가지 항목은 생략합니다.)
즉, 해당 오류가 수정되면 두 그림의 크기가 비슷하게 조정되는 것 같습니다. 실제로 그들은 동일해 보입니다.
내 추측으로는 예상대로 원치 않는 결과가 발생하는 오류에도 불구하고 컴파일을 계속하고 있다는 것입니다. 경고조차도 단순히 무시해서는 안 됩니다. 오류를 수정해야 합니다. 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}