我想用等宽字体输入两个字符串,并且我想要一条线将这两个字符串进行细分,但不改变它们没有这条线时的状态。
我知道这有点不清楚,但这是迄今为止我做的最好的,但有两件事我不知道该怎么做。
- 我希望第二行和第四行(即两个字符串)之间的距离与正常行距一样(即第一行、第三行和第五行应该没有高度)
为了保持字符之间的距离不变,即使它们之间有一条线,我也会强制在字母之间留出一个空格。目标是即使字符之间有一条线,字符之间也没有空格。
\documentclass[preview]{standalone} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{pmboxdraw} \usepackage{newunicodechar} \newunicodechar{└}{\textSFii} \newunicodechar{─}{\textSFx} \newunicodechar{┐}{\textSFiii} \begin{document} \texttt{~~~~~~~│}\par \texttt{5'\ldots G │ A N T C\ldots 3'}\par \texttt{~~~~~~~└─────┐ }\par \texttt{3'\ldots C T N A │ G\ldots 5'}\par \texttt{~~~~~~~~~~~~~│} \end{document}
解决方案可能是使用 TikZ。唯一的要求是它应该与 PDFLaTeX 兼容。
编辑1:
这是我按照 Percusse 的答案编写的代码,但是存在问题\ldots
。
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\foreach \x[count=\xi] in {5',\ldots,G,A,N,T,C,\ldots,3'}{\node[inner sep=0] (u-\xi) at (0.3*\xi,0.5){\x};}
\foreach \x[count=\xi] in {3',\ldots,C,T,N,A,G,\ldots,5'}{\node[inner sep=0] (d-\xi) at (0.3*\xi,0){\x};}
\draw ($(u-3.north)!0.5!(u-4.north)$)|-($(u-5)!0.5!(d-5)$)-|($(d-6.south)!0.5!(d-7.south)$);
\end{tikzpicture}
\end{document}
编辑 2:即使我仍然对 有疑问\ldots
,我还是将 Percusse 的答案标记为已接受的答案。marmot 提出的答案也不错,但出于显而易见的原因需要进行双重编译。
答案1
您可以进一步调整
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\foreach \x[count=\xi] in {G,A,N,T}{\node[inner sep=0] (u-\xi) at (0.3*\xi,0.5){\x};}
\foreach \x[count=\xi] in {C,T,N,A,G}{\node[inner sep=0] (d-\xi) at (0.3*\xi,0){\x};}
\draw ($(u-1.north)!0.5!(u-2.north)$)|-($(u-3)!0.5!(d-3)$)-|($(d-4.south)!0.5!(d-5.south)$);
\end{tikzpicture}
\end{document}
答案2
如果您只想在字符之间画一条线而不移动它们,请考虑使用覆盖。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand{\tikznode}[2]{\tikz[remember picture,baseline=(#1.base)]{\node(#1)[inner sep=0pt]{#2};}}
\begin{document}
\noindent
\foreach \X[count=\Y] in {G,A,N,T}
{\tikznode{upper-\Y}{\X}}\\
\foreach \X[count=\Y] in {C,T,N,A,G}
{\tikznode{lower-\Y}{\X}}
\begin{tikzpicture}[overlay,remember picture]
\coordinate (middle) at ($(upper-1.south)!0.5!(lower-1.north)$);
\draw (upper-1.north east) -- (upper-1.north east |- middle)
-- (lower-4.south west |- middle)
-- (lower-4.south west);
\end{tikzpicture}
\end{document}