答案1
每个堆栈由 组成\DNA{<component>[<value>]...<component>[<value>]...}{<height>}
。scomponent
为\Ad
、\Gu
、\Th
和\Cy
。svalue
为实数。必须小心,如果value
s 太高,则会发生算术溢出。
\thegap
value
定义专用于字母之间白色间隙的组件。设置为0
将使字母堆叠时没有间隙。
选择一个值来-
保留间隙,但不放置字母。
\documentclass{article}
\newcommand\thegap{.5}
\usepackage{stackengine,scalerel,xcolor}
\newcommand\Adenine{\textcolor{green}{\sffamily\bfseries A}}
\newcommand\Guanine{\textcolor{orange}{\sffamily\bfseries G}}
\newcommand\Thiamine{\textcolor{red}{\sffamily\bfseries T}}
\newcommand\Cytosine{\textcolor{blue}{\sffamily\bfseries C}}
\def\grow#1[#2]{%
\ifx-#2\else\stretchto{$#1$}{\dimexpr#2pt-\thegap pt\relax}\fi%
}
\newcommand\Ad{\grow\Adenine}
\newcommand\Gu{\grow\Guanine}
\newcommand\Th{\grow\Thiamine}
\newcommand\Cy{\grow\Cytosine}
\newcommand\DNA[2]{\setstackgap{S}{\thegap pt}\setstackEOL{ }\stretchto{\Shortstack{#1}}{#2}}
\begin{document}
\DNA{\Cy[14] \Gu[4] \Ad[5] \Th[5]}{30pt}%
\DNA{\Cy[17] \Gu[3] \Ad[4] \Th[3]}{30pt}%
\DNA{\Th[17] \Gu[5] \Ad[3] \Cy[-]}{30pt}%
\DNA{\Ad[120] \Gu[40] \Th[4] \Cy[3]}{30pt}%
\DNA{\Th[70] \Gu[20] \Cy[20] \Ad[20]}{30pt}%
\DNA{\Ad[90] \Gu[20] \Cy[20] \Th[5]}{30pt}%
\end{document}