对于 quantikz 包中给定的门符号,除了门标签之外,我还希望能够在门的上方或下方放置文本。
将文本向上移动并使用\n
强制在门标签中使用多行会导致错误。另一个帖子如上所述,\gate
quantikz 中的命令定义方式很奇怪。此外,我无法想出一种方法来将第二个标签分配给单个门(我会独立于第一个标签移动它)。
具体来说,我希望将文本放置在门符号的下方或上方,类似于此处看到的“0.003”:
有没有办法使用 quantikz 或者 tikz 来帮我自动化这个?
编辑 2-这是一个最小的工作示例代码片段,我尝试用它将其分成两行\n
。
\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{quantikz2}
\begin{document}
\begin{centering}
\begin{quantikz}
\\
\lstick{$q_0$} & \gate[label style={yshift=0.4cm}]{0.003\n X} & \ctrl{1} & \meter{} \\
\lstick{$q_1$} & & \targ{} & \meter{}
\\
\end{quantikz}
\end{centering}
\end{document}
理想情况下,X
会留在门内,而 0.003 会位于门上方或下方。但是,执行此代码会产生以下图像(在我这边):
更新 1-通过在代码片段中定义以下命令,能够实现目标:
\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{quantikz2}
\DeclareExpandableDocumentCommand{\errgate}{O{}O{2em}O{1.5em}mm}{
\gate[priority label=above,disable auto height,][0][0]{#5}
\gate[][0][0]{#4}
}
\begin{document}
\begin{centering}
\begin{quantikz}
\lstick{$q_0$} & \errgate{X}{0.001} & \ctrl{1} & \meter{} \\
\lstick{$q_1$} & & \targ{} & \meter{}
\end{quantikz}
\end{centering}
\end{document}
问题在于它会创建一个非常长而大的盒子,而不是一个整洁的小盒子。
答案1
解决了:
\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{quantikz2}
\begin{document}
\begin{centering}
\begin{quantikz}
\lstick{$q_0$} & \gate[label style={label={[red]above:$0.001$}}]{X} & \ctrl{1} & \meter{} \\
\lstick{$q_1$} & & \targ{} & \meter{}
\end{quantikz}
\end{centering}
\end{document}
只需通过“标签样式”参数传递标签即可\gate
就足够了(参考这个部分相关的 tikz 问题)。