我在 Tex Studio 中处理一个大文件,使用 quantikz 创建了很多电路。问题是,每当我在第三章或之后绘制电路时,编译后的 pdf 中出现的图表都有空白。
我尝试复制前几章中表现正常的电路代码,但在本章中生成电路时它们失败了,所以这不是电路代码的问题。然而,这是我用来导入它们的方法。
\begin{figure}[h]
\centering
\subimport{texto/circuitos/clausura/}{fasedoblecontrol.tex}
\caption{Circuito del Algoritmo de Grover aplicado a búsqueda.}
\label{Fase doblemente controlada}
\end{figure}
我没有收到任何相关错误,因为我收到的唯一警告来自上一章的图片。。我也尝试过将图表的代码直接包含在主代码中,但似乎没有任何改善。
看起来问题出在之前的电路上,所以在这里我添加了一个简化版本的代码,其中只有这两个电路:
\documentclass[11pt,oneside]{book}
\usepackage[spanish]{babel}
%\usepackage[latin1]{inputenc}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsfonts,amssymb,amsmath}
\usepackage{color,tikz}
\usepackage{graphicx}
\usepackage{dsfont}
\usepackage{amsthm}%para las fuentes matematicas
\usepackage{lmodern}
\usepackage{biblatex} %Imports biblatex package
\addbibresource{Biblio.bib}%Import the bibliography file
%%%%%%%%%%%%%%%Quantum Circuits%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{tikz}
\usetikzlibrary{quantikz2}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\pagestyle{plain}
\begin{figure}[h]
\centering
\begin{quantikz}
& \gate[4][2.4cm]{O}\gateinput[3]{$x$}\gateoutput[3]{$x$} & \gate[3][1.7cm]{H^{\otimes n}} & & \gate[4][3.7cm]{S_0}\gateinput[3]{$x$}\gateoutput[3]{$x$} & \gate[3][1.7cm]{H^{\otimes n}} & \\
\vdots\\
& & & & & & \\
& \gateinput{$-$}\gateoutput{$-\oplus f(x)$} & & &\gateinput{$-$}\gateoutput{$-\oplus (x_1\vee \ldots \vee x_n)$}&&
\end{quantikz}
\caption{Operador de Grover G.}
\label{Grover operador}
\end{figure}
\begin{figure}[h]
\begin{center}
\begin{quantikz}
\lstick{\ket{0}}&\gate{R_y(\theta)}& \ctrl{1}&\\
\lstick{\ket{\Psi_0}}&&\gate{U}&\\
\lstick{\ket{\Psi_0'}}&&&
\end{quantikz}
\end{center}
\caption{QADS de fase doblemente controlada}
\label{fasedoblecontrol}
\end{figure}
\end{document}
有人能告诉我该怎么办吗?或者是什么导致了这个问题?
提前致谢。
答案1
您的问题相当于
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{quantikz2}
\begin{document}
\begin{quantikz}
& \gate[3]{O} \\
\\
& \\
\end{quantikz}
\begin{quantikz}
& \gate{Z} & \\
& & \\
\end{quantikz}
\end{document}
粗略地说,第一个电路记录了第二行第二列中的单元格由全局变量中的门跨越。由于这个单元格从未被绘制,因此该指令比第一个quantikz
环境存在的时间更长,并且在第二个电路中绘制该单元格时仍然存在。
[2,2]
在本例中,可以通过以下方式手动重置单元格:
\makeatletter
\csundef{cell@width@2-2}
\makeatother
在两种quantikz
环境之间。
不过,我想更好的做法是第一次绘制单元格,这意味着让你的第一个quantikz
环境类似于
\begin{quantikz}
& \gate[4][2.4cm]{O} \gateinput[3]{$x$} \gateoutput[3]{$x$} & \gate[3][1.7cm]{H^{\otimes n}} & & \gate[4][3.7cm]{S_0} \gateinput[3]{$x$} \gateoutput[3]{$x$} & \gate[3][1.7cm]{H^{\otimes n}} & \\
\rstick{\vdots} & \wireoverride{n} & & & & \\
& & & & & & \\
& \gateinput{$-$} \gateoutput{$-\oplus f(x)$} & & & \gateinput{$-$} \gateoutput{$-\oplus (x_1\vee \ldots \vee x_n)$} & &
\end{quantikz}
它们\vdots
并不是完美地垂直放置的,但我认为您所能做的就是手动进行操作\rstick{\raisebox{1.5ex}{\vdots}}
。