我不熟悉 TikZ,但我需要使用 TikZ 创建图形,以便为我的论文可视化 Galois 对应关系。我读了手册,然后就迷路了。然而,我使用了 TikzMaker以某种方式实现我的需要但并不完美。
\begin{figure}[!ht]
\centering
\resizebox{1\textwidth}{!}{%
\begin{circuitikz}
\tikzstyle{every node}=[font=\normalsize]
\draw (6.25,11.25) circle (1.25cm) node {\normalsize $F = \mathbb{Q}$} ;
\draw (6.25,11.25) circle (2.75cm);
\draw (6.25,11.25) circle (4.25cm);
\node [font=\normalsize] at (6.25,13) {$E = \mathbb{Q}(\sqrt{5})$};
\node [font=\normalsize] at (6.25,14.5) {$K = \mathbb{Q}(\sqrt{5},i)$};
\draw [ -Stealth] (8.25,10.5) -- (8.25,12);
\draw [ -Stealth] (9.75,10.5) -- (9.75,12);
\end{circuitikz}
}%
\label{fig:my_label}
\end{figure}
所以请帮我把它弄小一点,让箭头的曲率更圆一点。谢谢。
答案1
图表的一些提示:
您使用
circuitikz
环境,但实际上并未使用circuitikz
包提供的任何形状或命令。因此,我建议您只加载tikz
包(包也会加载包circuitikz
,因此如果您需要此包,则无需tikz
单独加载),然后使用简单的tikzpicture
环境。您还需要加载arrows.meta
库,以便能够使用-Stealth
。\tikzstyle
不应再使用命令。而是使用\tikzset
。语法略有不同,但选项的键值对几乎相同(如下例所示)。您可以scale
在此处添加一个选项,其值为,例如,0.75
缩放整个图表。如果您设置every node/.append style={font=\normalsize}
,则无需设置font=\normalsize
为单个节点(或节点文本内)。我会将圆圈置于坐标中心
(0,0)
,这样您就可以使用简单的极坐标来定位节点并绘制弯曲的箭头。极坐标在第一个位置处取一个角度(零点向东),在第二个位置处取与原点的距离,两个位置之间用冒号 ( ) 分隔:
。使用较新的语法
circle
:circle[radius=1.25]
代替circle (1.25cm)
。您可以省略cm
,因为 Ti 中的默认单位钾无论如何,Z 都是 1cm。要绘制弯曲的箭头,请使用
arc
如下例所示。
\documentclass[border=10pt]{standalone}
\usepackage{tikz, amsfonts}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\tikzset{every node/.append style={font=\normalsize}, scale=0.75}
\draw (0,0) circle[radius=1.25] node {$F = \mathbb{Q}$};
\draw (0,0) circle[radius=2.75cm];
\draw (0,0) circle[radius=4.25cm];
\node at (90:1.75) {$E = \mathbb{Q}(\sqrt{5})$};
\node at (90:3.25) {$K = \mathbb{Q}(\sqrt{5},i)$};
\draw[-Stealth] (-45:2) arc[start angle=-45, end angle=0, radius=2];
\draw[-Stealth] (-45:3.5) arc[start angle=-45, end angle=0, radius=3.5];
\end{tikzpicture}
\end{document}
答案2
它的绘制方法很简单:左侧部分只是 3 个同心圆,中间有一些node
用于标记的圆点和箭头弧;右侧部分只是node
用箭头连接的圆点,并且全部向右移动。这scale
允许您控制大小
\documentclass{article}
\usepackage[margin=3cm]{geometry}
\usepackage{amssymb,amsmath}
\usepackage{lipsum} % >>> for dummy texts
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\lipsum[1]
\begin{center}
\begin{tikzpicture}[>={Straight Barb[angle=60:5pt 2]}]
% change the scale as desired
\begin{scope}[scale=1.2] % the left part
\draw[thick]
(0,0) circle(1) node{$F=\mathbb{Q}$}
(0,0) circle(2) +(90:1.5) node{$E=\mathbb{Q}(\sqrt{5})$}
(0,0) circle(3) +(90:2.5) node{$K=\mathbb{Q}(\sqrt{5},i)$}
;
\draw[->,gray] (-45:1.5) arc(-45:45:1.5);
\draw[->,gray] (-45:2.5) arc(-45:45:2.5);
\end{scope}
\begin{scope}[shift={(5.5,0)}] % the right part
\path
(0,0) node (F) {$F$} +(3.5,0) node (KF) {$\rm{Gal}(K/F)$}
(0,1.5) node (E) {$E$} +(3.5,0) node (KE) {$\rm{Gal}(K/K)$}
(0,3) node (K) {$K$} +(3.5,0) node (KK) {$\rm{Gal}(K/K)$}
;
\draw[->] (F)--(E);
\draw[->] (E)--(K);
\draw[->] (KK)--(KE);
\draw[->] (KE)--(KF);
\draw[dashed] (F)--(KF) (E)--(KE) (K)--(KK);
\end{scope}
\end{tikzpicture}
\end{center}
\lipsum[5]
\end{document}
答案3
与 Jasper 的方法相同,即做最少的事情,但有一些差异。
我发现从独立的绘图类开始总是一个好主意。您可以稍后修改该类、复制代码或做类似的事情。
为了帮助您的学习过程,我建议您执行以下操作,也许重复几次以掌握这个强大的工具:
- 学习手册第 1 部分中的至少一个示例,即教程
- 并行查找所有 tikz 语句,例如从下面的代码中(使用搜索功能)
\documentclass[10pt,border=3mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}% for the arrows in first diagram
\usetikzlibrary{positioning}% for the mapping diagram
\usepackage{amssymb}
\begin{document}
\begin{tikzpicture}[
execute at begin node=$,
execute at end node=$,% this way you can omit the $..$
> = {stealth}]
% ~~~ circles ~~~~~~~~~~~~~~
\draw (0,0) circle(1.25);
\draw (0,0) circle(2.75);
\draw (0,0) circle(4.25);
% ~~~ Text / nodes ~~~~~~
\node at (0,0) {F = \mathbb{Q}};
\node at (0,1.8) {E = \mathbb{Q}(\sqrt{5})};
\node at (0,3.5) {K = \mathbb{Q}(\sqrt{5},i)};
% ~~~+ arcs ~~~~~~~~~~~~~~~~
% [->] draws a line with an arrow, while [gray] and [dotted] indicate ideas for you
\draw [->,gray] (-45:1.8) arc[start angle=-45,end angle=0,radius=1.8];
\draw [->,dotted] (-45:3.5) arc[start angle=-45,end angle=0,radius=3.5];
\end{tikzpicture}
\begin{tikzpicture}[> = {Stealth}]
% ~~~ nodes ~~~~
\node (K) {K};% node's name is K, to be referenced later
\node[below=of K] (E) {E};
\node[below=of E] (F) {F};
\node[right=of K] (GK) {Gal(K/K)};
\node[right=of E] (GE) {Gal(K/E)};
\node[right=of F] (GF) {Gal(K/F)};
% ~~~ lines ~~~~~~~~~~~
\draw[dashed] (K) -- (GK);% () means: recall positions of nodes named K, GK etc.
\draw[dashed] (E) -- (GE);
\draw[dashed] (F) -- (GF);
\draw[->] (F) -- (E);
\draw[->] (E) -- (K);
\draw[->] (GK) -- (GE);
\draw[->] (GE) -- (GF);
\end{tikzpicture}
\end{document}