对于 quantikz 的切片元素,我想将文本放在底部,例如,我可以使用A1
和B1
文本执行此操作
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{quantikz2}
\begin{document}
\begin{quantikz}
\lstick{a}
& \gate[2, style={fill=blue!20, rounded corners}]{A} \slice[style=blue, label style={yshift=-9.8em}]{A1}
&
&
& \meter[3, style={fill=red!25, rounded corners}]{X} \\
\lstick{b}
&
& \gate[style={fill=green!25, rounded corners}]{S}
& \gate[2, style={fill=orange!20, rounded corners}]{B} \slice[label style={yshift=-9.8em}]{B1}
&\\
\lstick{c}
&
&
&
&
\end{quantikz}
\end{document}
和label style={yshift=-9.8em}
一些反复试验的估计。我需要对各种其他图表执行此操作,猜测和yshift
手动设置可能有点麻烦,有没有办法自动将文本放置在虚线的底部?
答案1
该\meter
命令定义如下:
\DeclareExpandableDocumentCommand{\meter}{O{}O{2em}O{1.5em}m}{%
\gate[#1,priority label=above,ps=meter,disable auto height][#2][#3]{#4}
}
这意味着您不能简单地将标签放在下面,因为任何此类样式都将被选项覆盖priority label
。我不确定为什么软件包维护者以这种方式定义它。但是,正如您所见:a\meter
只是\gate
带有一些额外样式的 a。因此,您可以轻松地在代码中使用它。此外,我建议您不要使用yshift
一些经验值来定位\slice
标签,而是更改pos
值和对齐锚点:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{quantikz2}
\begin{document}
\begin{quantikz}
\lstick{a}
& \gate[2, style={fill=blue!20, rounded corners}]{A}
\slice[style=blue, label style={pos=1, anchor=north}]{A1}
&
&
& \gate[3, priority label=below, ps=meter, disable auto height,
style={fill=red!25, rounded corners}]{X} \\
\lstick{b}
&
& \gate[style={fill=green!25, rounded corners}]{S}
& \gate[2, style={fill=orange!20, rounded corners}]{B}
\slice[label style={pos=1, anchor=north}]{B1}
&\\
\lstick{c}
&
&
&
&
\end{quantikz}
\end{document}