我正在使用 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}