Quantikz 格式化门框

Quantikz 格式化门框

我正在尝试绘制一个电路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,以设置框的样式。

C

\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 线门使用相同的技术:

F

\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}

相关内容