如何画一条穿过两条弦的线?

如何画一条穿过两条弦的线?

我想用等宽字体输入两个字符串,并且我想要一条线将这两个字符串进行细分,但不改变它们没有这条线时的状态。

我知道这有点不清楚,但这是迄今为止我做的最好的,但有两件事我不知道该怎么做。

  1. 我希望第二行和第四行(即两个字符串)之间的距离与正常行距一样(即第一行、第三行和第五行应该没有高度)
  2. 为了保持字符之间的距离不变,即使它们之间有一条线,我也会强制在字母之间留出一个空格。目标是即使字符之间有一条线,字符之间也没有空格。

    \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}

在此处输入图片描述

相关内容