如何实现 tikzpicture 注释的铸造环境与下一段之间的一致 vspace?

如何实现 tikzpicture 注释的铸造环境与下一段之间的一致 vspace?

我正在使用 tikzmark 和 tikzpicture 注释代码示例。我注意到下一段(或文本行)与代码示例之间存在不一致的 vspace。我尝试使用 \vspace{-1em} 或类似方法减少间距。但我担心这会意外产生不良结果。我应该如何实现一致(或接近一致)的间距而不会产生不良副作用?请查看附图以更好地查看问题。

%!TEX encoding = UTF-8 Unicode

\documentclass[10pt]{article}
\XeTeXlinebreaklocale "my_MM"  %Myanmar line and character breaks
\XeTeXinterwordspaceshaping=2 %%% PLEASE EXPERIMENT  BY SETTING WITH DIFFERENT VALUES


\usepackage{fontspec}
\setmainfont{Padauk Book}

\usepackage[outputdir=out]{minted}
\AtBeginEnvironment{minted}{\let\special\mintedspecial} 
\def\mintedspecial{\kern0pt\primitive\special}
\makeatletter
\AtBeginEnvironment{minted}{\dontdofcolorbox}
\def\dontdofcolorbox{\renewcommand\fcolorbox[4][]{##4}}
\makeatother

\usepackage{tikz}
\usetikzlibrary{tikzmark}
\usetikzlibrary{arrows.meta}

\begin{document}


%
\setlength{\fboxsep}{0pt}
\begin{minted}[frame=leftline, framerule=.5pt,framesep= 2pt, xleftmargin=0pt
    , escapeinside=ßß]{python}
def make_beeper_row():
    if front_is_clear():ß\tikzmark{z2}ß
        put_beeper()
        move()
        make_beeper_row()ß\tikzmark{z3}ß
    else:
        put_beeper()ß\tikzmark{z4}ß

make_beeper_row()ß\tikzmark{z1}ß
\end{minted}
%
\begin{tikzpicture}[
  remember picture,
  overlay,
  annotation/.style={
    inner sep=0pt,
    outer sep=0pt,
    outer xsep=0mm,
    fill=yellow!80!black,
    text width=5cm
  },
  >={Stealth[inset=0pt, angle=30:7pt]}
]
\draw[->, thick] ([yshift=0ex] pic cs:z1) -- ++(3,0) |- ([yshift=1.4ex]pic cs:z2);%
\draw[->, thin,blue] ([yshift=0ex] pic cs:z3) -- ++(1,0) |- ([yshift=0.5ex] pic cs:z2);%
\draw[->, thin,blue] ([yshift=1.2ex] pic cs:z3) -- ++(.7,0) |- ([yshift=-.4ex] pic cs:z2);%
\draw[->, thin,red] ([yshift=0.5ex] pic cs:z4) -- ++(.7,0) |- ([yshift=1.2ex] pic cs:z1);%
\end{tikzpicture}%


ရီကားဆစ်ဖ်ကောလ် ဖြစ်တာကို စိတ်ကူးပုံဖော်ကြည့်ဖို့ ပြထားတာပါ။ အပြင်ဆုံး မြှားအနက်က ကန\allowbreak ဦး ဖန်ရှင်ကောလ် စတင်တာဖြစ်‌ပေါ်တာကို ဖော်ပြတယ်။ ရီကားဆစ်ဖ်ကောလ် မဟုတ်သေးဘူး။ 

%
\setlength{\fboxsep}{0pt}
\begin{minted}[frame=leftline, framerule=.5pt,framesep= 2pt, xleftmargin=0pt
    , escapeinside=ßß]{python}
def make_beeper_row():
    if front_is_clear():
        put_beeper()
        move()
        make_beeper_row()
    else:
        put_beeper()

make_beeper_row()
\end{minted}

ရီကားဆစ်ဖ်ကောလ် ဖြစ်တာကို စိတ်ကူးပုံဖော်ကြည့်ဖို့ ပြထားတာပါ။ အပြင်ဆုံး မြှားအနက်က ကန\allowbreak ဦး ဖန်ရှင်ကောလ် စတင်တာဖြစ်‌ပေါ်တာကို ဖော်ပြတယ်။ ရီကားဆစ်ဖ်ကောလ် မဟုတ်သေးဘူး။ 

%
\setlength{\fboxsep}{0pt}
\begin{minted}[frame=leftline, framerule=.5pt,framesep= 2pt, xleftmargin=0pt
    , escapeinside=ßß]{python}
def make_beeper_row():
    if front_is_clear():ß\tikzmark{y2}ß
        put_beeper()
        move()
        make_beeper_row()ß\tikzmark{y3}ß
    else:
        put_beeper()ß\tikzmark{y4}ß

make_beeper_row()ß\tikzmark{y1}ß
\end{minted}
%
\begin{tikzpicture}[
  remember picture,
  overlay,
  annotation/.style={
    inner sep=0pt,
    outer sep=0pt,
    outer xsep=0mm,
    fill=yellow!80!black,
    text width=5cm
  },
  >={Stealth[inset=0pt, angle=30:7pt]}
]
\draw[->, thick] ([yshift=0ex] pic cs:y1) -- ++(3,0) |- ([yshift=1.4ex]pic cs:y2);%
\draw[->, thin,blue] ([yshift=0ex] pic cs:y3) -- ++(1,0) |- ([yshift=0.5ex] pic cs:y2);%
\draw[->, thin,blue] ([yshift=1.2ex] pic cs:y3) -- ++(.7,0) |- ([yshift=-.4ex] pic cs:y2);%
\draw[->, thin,red] ([yshift=0.5ex] pic cs:y4) -- ++(.7,0) |- ([yshift=1.2ex] pic cs:y1);%
\end{tikzpicture}%
ရီကားဆစ်ဖ်ကောလ် ဖြစ်တာကို စိတ်ကူးပုံဖော်ကြည့်ဖို့ ပြထားတာပါ။ အပြင်ဆုံး မြှားအနက်က ကန\allowbreak ဦး ဖန်ရှင်ကောလ် စတင်တာဖြစ်‌ပေါ်တာကို ဖော်ပြတယ်။ ရီကားဆစ်ဖ်ကောလ် မဟုတ်သေးဘူး။ 


\end{document}

在此处输入图片描述

相关内容