LaTex를 사용한 비트 문자열 다이어그램

LaTex를 사용한 비트 문자열 다이어그램

샘플 사진과 같은 다이어그램을 만들고 싶습니다. 라텍스를 사용하여 수행할 수 있는지 여부는 확실하지 않습니다. 누구든지 어떤 아이디어를 줄 수 있습니까? 감사해요.

샘플 이미지

답변1

학습의 시작점으로(기본 도구로 TikZ 패키지를 선택한 경우) 다음 MWE를 제공할 수 있습니다.

\documentclass[tikz, border=3mm]{standalone}
\usetikzlibrary{chains,decorations.pathreplacing}

\begin{document}
    \begin{tikzpicture}[
node distance=0pt,
 start chain = A going right,
    X/.style = {rectangle, draw,% styles of nodes in string (chain)
                minimum width=2ex, minimum height=3ex,
                outer sep=0pt, on chain},
    B/.style = {decorate,
                decoration={brace, amplitude=5pt,
                pre=moveto,pre length=1pt,post=moveto,post length=1pt,
                raise=1mm,
                            #1}, % for mirroring of brace, if necessary
                thick},
    B/.default=mirror, % by default braces are mirrored
                        ]
\foreach \i in {0,1,1,0,0,0,1,0,0,
                0,1,0,1,0,0,0,1,0,
                0,0,1,1,0,0,1,0,0}% <-- content of nodes
    \node[X] {\i};
\draw[B] ( A-1.south west) -- node[below=2mm] {Channel 1 Links} ( A-9.south east);
\draw[B] (A-10.south west) -- node[below=2mm] {Channel 2 Links} (A-18.south east);
\draw[B] (A-19.south west) -- node[below=2mm] {Channel 3 Links} (A-27.south east);
\node (B1) [inner sep=1pt,above=of A-10.north west] {$\times$};
\node (B2) [inner sep=1pt,above=of A-19.north west] {$\times$};
\draw[B=](B1.north) -- node[above=2mm] {Crossover Points}(B2.north);
    \end{tikzpicture}
\end{document}

이는 다음을 제공합니다:

여기에 이미지 설명을 입력하세요

코드에 대한 간단한 설명: 위의 코드는 (매우) 간결하므로 TikZ 패키지에 대한 약간의 경험을 이해하는 것이 필요합니다. 디자인할 때 다음 사항을 고려했습니다.

  • 그림의 단순한 구조. 그것은 사슬을 형성하는 동일한 모양의 27개의 노드를 가지고 있습니다. 따라서 chainsTikZ의 라이브러리가 위치 지정에 사용됩니다. 이는 옵션에 의해 정의됩니다 start chain = A going right. 여기서 A는 체인 이름입니다. 결과적으로 체인의 노드 이름은 A-1, A-2, ..., A-27입니다.

  • 체인의 노드 사이의 거리는 에 의해 결정됩니다 node distance. 기본값은 15mm이므로 0으로 설정되어 노드가 모양의 매개변수 node distance=0pt로만 구분됩니다 . outer sep경계선이 적절하게 겹쳐지고 이 거리도 0으로 설정됩니다(노드 스타일 정의에서는 X로 명명됨).

  • TikZ에서 foreach루프는 반복 작업을 수행하기 위한 것입니다. 이러한 작업은 체인에 노드를 설정하는 것입니다. ~와 함께

    \forach \i in {...}\node[X] {\i};

    중괄호 안의 목록에 의해 내용이 결정되는 노드 체인(스타일 X 사용)으로 구성됩니다. 위치는 체인에 의해 결정되므로 루프는 실제로 번호와 내용만 결정합니다.

  • 노드 아래와 위의 중괄호는 라이브러리를 사용하여 그려집니다 decorations.pathreplacing. 매개변수 정의에서 매개변수는 mirror나중에 결정될 수 있는 자유 매개변수로 선택됩니다. 4개의 중괄호 중 3개가 미러링되므로 이것이 기본값으로 설정되고 예외는 "로컬"로 결정됩니다.

  • 1ptBraces는 좌표 사이의 거리보다 양쪽이 더 짧게 설계되었으며, raise=1mm주어진 좌표에서 아래로(미러링된 경우) 또는 위로(미러링되지 않은 경우) 이동하도록 설계되었습니다 .

  • "채널 2 링크"의 시작과 끝 위의 십자가는 "고전적인 방식"으로 설정되어 있으며 above=of <coordinate name>곱셈을 위해 수학 기호가 사용됩니다.

여기에 사용되는 TikZ의 원리에 대한 더 자세한 설명은 TikZ 매뉴얼에 있습니다.

  • 체인의 경우: 46장 체인, 541페이지
  • for \foreach루프: 83장 반복 항목: Foreach 문, 901페이지
  • 교정기의 경우: 하위 섹션 48.3 장식 교체 경로, 581페이지

답변2

다음을 포함하는 단축 코드 pstricks:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{mathtools}
\usepackage{pstricks-add, multido}
\usepackage{auto-pst-pdf}

\begin{document}
\sffamily

 \begin{pspicture}
  \psset{dimen=middle, linewidth=0.6pt, braceWidthOuter=4pt, braceWidthInner=4pt, braceWidth=0.8pt, labelsep =-2ex}
  \multido{\i = 0 + 1, \n=0+0.5}{27}{\fnode[framesize=0.5](\n, 0){A\i}}%
  \rmultiput{$0$}(A0)(A3)(A4)(A5)(A7)(A8)(A9)(A11)(A13)(A14)(A15)(A17)(A18)(A19)(A22)(A23)(A25)(A26)
  \rmultiput{$1$}(A1)(A2)(A6)(A10)(A12)(A16)(A20)(A21)(A24)
  \psset{rot=90, nodesepB=2ex}
  \multido{\ia=0 + 9, \ib=8 + 9}{3}{\pnode[-0.15, -0.35](A\ia){B\ia}\pnode[0.15, -0.35](A\ib){B\ib}\psbrace(B\ia)(B\ib){\clap{Channel\,1 Links}}}
  \multido{\i=8 + 9}{2}{\pnode[0.25,0.6](A\i){C\i}\uput{1pt}[d](C\i){$\times$}}
  \psbrace[rot=-90, nodesepB=-0.5ex](C17)(C8){\clap{Crossover Points}}
\end{pspicture}

\end{document} 

여기에 이미지 설명을 입력하세요

관련 정보