更新:
% 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}
这是我目前能做的。表格没有垂直对齐。
答案1
您可以使用nicematrix
然后使用 Ti钾Z 命令用于绘制各种注释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}