我正在尝试绘制一个电路quantikz
并使用手册中的示例。
\documentclass{article}
\usepackage{graphicx}
\usepackage{amssymb,amsfonts}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\begin{document}
\begin{quantikz}
& \gate[style={inner xsep=-5pt}]{H} & \ctrl{2} & \qw & \ctrl{2} & \qw & \qw \\
& \qw & \qw & \gate[2,style={inner xsep=-5pt, rotate=-90}]{R_z(-\theta/2)} & \qw & \gate[2,style={inner xsep=-5pt, rotate=-90}]{R_z(\theta/2)} & \meter{} \\
& \qw & \targ{} & \qw & \targ{} & \qw & \meter{}
\end{quantikz}
\end{document}
如何使用默认设置门框尺寸style={inner xsep=-5pt}
?我尝试了这个帖子但它们仅显示了如何针对单个门执行此操作。是否还可以删除门和电线之间的空白(参见H
下面的门)?
我还想将一些门的文本和框逆时针旋转 90 度 - 我尝试使用style={rotate=-90}
andstyle={rotate=270}
命令,但这没有任何作用。
编辑:
根据 Simon Dispa 的建议,以下代码
\begin{quantikz}
& \gate{H} & \ctrl{2} & \qw & \ctrl{2} & \qw & \qw \\
& \qw & \qw
& \gate[2,style={inner ysep=-2pt, inner xsep=-12pt}, label style={rotate=90}]{R_z(-\theta/2)} & \qw
& \gate[2,style={inner ysep=-2pt, inner xsep=-12pt}, label style={rotate=90}]{R_z(\theta/2)} & \meter{} \\
& \qw & \targ{} & \qw & \targ{} & \qw & \meter{}
\end{quantikz}
给出
为什么电线和盒子之间有很大间隙?如何使盒子的高度和宽度相同?
编辑2:
我修改了 Simon Dispa 的答案,以便将Rz
门连接到下面的两根电线。但我无法使用\arrow[arrows]{ll}
\tikzset{
operator/.append style={draw,fill=blue!10, text height = 50pt, text width = 20pt},
}
\begin{quantikz}
& \gate[style={text height = 20pt},label style={cyan}]{H} & \ctrl{2} & \qw & \ctrl{2} & \qw & \qw & \qw \\
& \qw & \qw
& \gate[2, label style={black, rotate=90,}]{R_z(-\theta/2)} & \arrow[arrows]{ll}
& \gate[2, label style={black,rotate=90}]{R_z(\theta/2)} & \arrow[arrows]{ll} & \meter{} \\
& \qw & \targ{} & \arrow[arrows]{ll} & \targ{} & \arrow[arrows]{ll} & \qw & \meter{}
\end{quantikz}
答案1
\gate
接受 tikz 节点格式化键作为label style
可选参数,并且还接受第二个键用于格式化显示的其他元素style
,以设置框的样式。
\documentclass{article}
\usepackage{graphicx}
\usepackage{amssymb,amsfonts}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\begin{document}
\begin{quantikz}
& \gate[style={fill=red!20,inner xsep=1ex},label style={cyan}]{H} & \ctrl{2} & \qw & \ctrl{2} & \qw & \qw \\
& \qw & \qw
& \gate[label style={black, rotate=90}][0pt][11ex]{R_z(-\theta/2)}{}{} & \qw
& \gate[style={fill=red!20, inner ysep=3.5ex, inner xsep=0ex},label style={black, rotate=90}]{R_z(\theta/2)} & \meter{} \\
& \qw & \targ{} & \qw & \targ{} & \qw & \meter{}
\end{quantikz}
\end{document}
对于全局样式使用 tikzset
。例如
\tikzset{
gg label/.append style={rotate=90},
}
将旋转所有门标签(手册第 11 页)
更新在后续问题之后。
您可以修改已定义的operator
样式以获得新的全局默认值。
但是减少盒子内的白色空间,使得电线不再连接到大门。
有一个很好的解决办法。参见Quantikz:大小相同的门箱
您可以画一条双倍长度的线到门后面,这样就看不到缝隙了。(假设您的门有背景颜色,即您没有使用透明选项)。
\documentclass{article}
\usepackage{graphicx}
\usepackage{amssymb,amsfonts}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\begin{document}
\tikzset{
operator/.append style={draw,fill=blue!10, text height = 50pt, text width = 20pt},
}
\begin{quantikz}
& \gate[style={text height = 20pt},label style={cyan}]{H} & \ctrl{2} & \qw & \ctrl{2} & \qw & \qw & \qw \\
& \qw & \qw
& \gate[label style={black, rotate=90,}]{R_z(-\theta/2)} & \arrow[arrows]{ll}
& \gate[label style={black,rotate=90}]{R_z(\theta/2)} & \arrow[arrows]{ll} & \meter{} \\
& \qw & \targ{} & \qw & \targ{} & \qw & \qw & \meter{}
\end{quantikz}
\end{document}
对于 2 线门使用相同的技术:
\documentclass{article}
\usepackage{graphicx}
\usepackage{amssymb,amsfonts}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\begin{document}
\tikzset{
operator/.append style={draw,fill=blue!10, text height = 50pt, text width = 20pt},
}
\begin{quantikz}
& \gate[style={text height = 20pt},label style={cyan}]{H} & \ctrl{2} & \qw & \ctrl{2} & \qw & \qw & \qw \\
& \qw & \qw
& \gate[label style={black,rotate=90}, wires=2]{R_z(-\theta/2)} & \arrow[arrows]{ll}
& \gate[label style={black,rotate=90}, wires=2]{R_z(\theta/2)} & \arrow[arrows]{ll} & \meter{} \\
&\qw & \targ{} & & \targ{} \arrow[arrows]{ll} & & \arrow[arrows]{ll}& \meter{}
\end{quantikz}
\end{document}
或者,得到相同的结果和更简单的代码:
\documentclass{article}
\usepackage{graphicx}
\usepackage{amssymb,amsfonts}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\begin{document}
\tikzset{
operator/.append style={draw,fill=blue!10, text height = 50pt, text width = 20pt},
}
\begin{quantikz}
& \gate[style={text height = 20pt},label style={cyan}]{H} & \ctrl{2} & \qw & \ctrl{2} & \qw & \qw \\
& &
& \gate[label style={black,rotate=90}, wires=2]{R_z(-\theta/2)} &
& \gate[label style={black,rotate=90}, wires=2]{R_z(\theta/2)} & \meter{}\vqwexplicit{2-1}{2-7} \\
& & \targ{} & & \targ{} & & \meter{}\vqwexplicit{3-1}{3-7}
\end{quantikz}
\end{document}