这个滑动窗口该如何制作?

这个滑动窗口该如何制作?

在此处输入图片描述

书:精确字符串匹配算法手册

更新:

% compiler: xelatex
\documentclass{report}
\usepackage[top=2cm, bottom=2cm, left=2.5cm, right=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\usepackage{graphicx} % Required for inserting images
\usepackage{tabularx}
\usepackage{color}
\usepackage{xcolor}
\usepackage{soul}

\newcommand{\hlcd}[2][black!30]{{%
    \colorlet{foo}{#1}%
    \sethlcolor{foo}\hl{#2}}%
}
\newcommand{\hlcl}[2][black!15]{{%
    \colorlet{foo}{#1}%
    \sethlcolor{foo}\hl{#2}}%
}

\begin{document}

\setlength\fboxsep{0pt}

$y$ 
\ttfamily
\begin{tabular}{|l|}
\hline
 G C A T C G C A G A G A G T \hlcd{A}  \hlcd{T} \hlcd{A} C A G T A C \hlcl{G} \\
 \hline
\end{tabular} \\

1 \\

$x$ 
\begin{tabular}{|l|}
\hline
G C A G A G A  \hlcd{G} \\
\hline
\end{tabular} \\


\end{document}

更新2

这是我目前能做的。表格没有垂直对齐。

答案1

您可以使用nicematrix然后使用 TiZ 命令用于绘制各种注释CodeBefore(突出显示单个单元格)和CodeAfter(框出单元格组)。

请注意,对于影响单元格位置的任何更改,您必须编译 3 次。

在此处输入图片描述

\documentclass{article}

\usepackage{nicematrix, tikz}
\usetikzlibrary{fit}

\begin{document}

\renewcommand{\arraystretch}{1.2}
\begin{NiceTabular}{*{24}{@{\;}>{\ttfamily}c@{\;}}}
\CodeBefore [create-cell-nodes]
  \tikz{\foreach \c in {1-15, 1-16, 1-17, 1-24, 3-15, 5-16, 7-24, 9-24, 11-17}
    \node[fill=gray!50, inner xsep=4pt, inner ysep=6.5pt] at (\c) {} ; 
  }
\Body
G&C&A&T&C&G&C&A&G&A&G&A&G&T&A&T&A&C&A&G&T&A&C&G\\
&&&&&&&&&&&&&&1\\
&&&&&&&G&C&A&G&A&G&A&G\\
&&&&&&&&&&&&&&&2\\
&&&&&&&&G&C&A&G&A&G&A&G\\
&&&&&&&&&&&&&&&&&&&&&&&3\\
&&&&&&&&&&&&&&&&G&C&A&G&A&G&A&G\\
&&&&&&&&&&&&&&&&&&&&&&&4\\
&&&&&&&&&&&&&&&&G&C&A&G&A&G&A&G\\
&&&&&&&&&&&&&&&&5\\
&&&&&&&&&&&&&&&&G&C&A&G&A&G&A&G\\
\CodeAfter
  \tikz{ 
    \node[draw, fit=(1-1)(1-24), label={left:$y$}]{};
    \node[draw, fit=(1-8)(1-15), inner ysep=5pt, inner xsep=1pt]{};
    \node[draw, fit=(3-8)(3-15), label={left:$x$}]{};
    \node[draw, fit=(5-9)(5-16), label={left:$x$}]{};
    \node[draw, fit=(7-17)(7-24), label={left:$x$}]{};
    \node[draw, fit=(9-17)(9-24), label={left:$x$}]{};
    \node[draw, fit=(11-17)(11-24), label={left:$x$}]{};
  } 
\end{NiceTabular}

\end{document}

相关内容