麥柯迪 (McCurdy) 的廬半群函子的弦圖

麥柯迪 (McCurdy) 的廬半群函子的弦圖

幾乎可以肯定,您不知道 Micah McCurdy 是誰,但這是他的圖表示例,第 20-21 頁例如,或第 27 頁了解更奇特的內容。我問他是如何做到的,不幸的是,這不是「本地」(La)TeX 方法,涉及兩個獨立的軟體包。

我希望能夠在 TikZ 或 PSTricks 中執行此操作,但我對其中任何一個都一無所知。這個專案將是我學習的機會。我想做一些模組化的事情,以幫助對圖表進行編碼作為一種計算方法,而不是僅僅手工繪製它們(例如在紙上),然後費力地對它們進行編程。

arXiv:1110.5542v1,第 20 頁

編輯:感謝 Tom Bombadil 嘗試了 canaaerus 粘貼的示例,這是可能的視覺複雜性的一個很好的示例,但我確實需要上面鏈接的 pdf 第 7 頁和第 8 頁上指定的圖形元素,結合起來以及第三頁的內容。

在此輸入影像描述

答案1

這是一個概念,它使用第零個的答案在TikZ 中的三線

程式碼

\documentclass{article}
\usepackage{tikz}

\begin{document}

\tikzset{
    triple/.style args={[#1] in [#2] in [#3]}{#1,preaction={preaction={draw,#3},draw,#2}},
    McCurdy/.style={triple={[line width=0.5pt,black] in [line width=2mm,red!30] in [line width=2mm+1pt,black]}},
}

\newcommand{\trapezium}[1]% shift as x,y (lower left corner)
{ \draw[fill=white,shift={(#1)}](0,0) -- (0.3,0) -- (0.3,0.8) -- (0,0.95) -- cycle;
}        

\begin{tikzpicture}
  \draw[McCurdy,rounded corners=1mm] (0,0) coordinate (start1) -- (5,0) -- (5,1) -- (2,1) -- (2,2) -- (2.5,2) -- (2.7,2.2) coordinate (end1);
  \draw[McCurdy,rounded corners=1mm] (2.9,2.4) coordinate (start2) -- (3.5,3) -- (7,3) coordinate (end2);
  \node[left] at (start1) {x};
  \trapezium{4,0.8}
  \trapezium{6,2.8}
  \pgfmathsetmacro{\xydim}{sqrt(2)/2*(1mm+0.5pt)/28.4528}
  \draw (end1) ++ (-\xydim,\xydim) -- ++ (2*\xydim,-2*\xydim);
  \draw (start2) ++ (-\xydim,\xydim) -- ++ (2*\xydim,-2*\xydim);
  \draw[rounded corners=1mm] (2.8,2.3) -- (2,3.1) -- (0.8,3.1)
    (2.8,2.3) -- (3.6,1.5) -- (4,1.5);
\end{tikzpicture}
\end{document}

輸出

在此輸入影像描述


編輯1:繪製“孔”的概念,但只能在平行的左右線上上下繪製。它繪製了現有的線條:

在此輸入影像描述

程式碼

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

\pgfmathsetmacro{\rlw}{0.2}
\pgfmathsetmacro{\blw}{0.02}

\pgfmathsetmacro{\hbw}{\blw/2}
\pgfmathsetmacro{\qbw}{\blw/4}
\pgfmathsetmacro{\hrw}{\rlw/2}

\tikzset{
    triple/.style args={[#1] in [#2] in [#3]}{#1,preaction={preaction={draw,#3},draw,#2}},
    McCurdy/.style={triple={[line width=\blw cm,black] in [line width=\rlw cm,red!30] in [line width=2*\blw cm+\rlw cm,black]}},
}

\newcommand{\trapezium}[1]% shift as x,y (lower left corner)
{ \draw[fill=white,shift={(#1)}](0,0) -- (0.3,0) -- (0.3,0.8) -- (0,0.95) -- cycle;
} 

\def\connector(#1,#2,#3)% midposition one, midposition two, radius
{   \path (#1);
    \pgfgetlastxy{\xtl}{\ytl}
    \path (#2);
    \pgfgetlastxy{\xbr}{\ybr}
    \pgfmathsetmacro{\xmin}{min(\xtl,\xbr)/28.453}
    \pgfmathsetmacro{\xmax}{max(\xtl,\xbr)/28.453}
    \pgfmathsetmacro{\ymin}{min(\ytl,\ybr)/28.453}
    \pgfmathsetmacro{\ymax}{max(\ytl,\ybr)/28.453}
    \fill[red!30] ($(\xmin,\ymax)+(-#3,-\hrw)$)
        arc (90:0:#3) -- 
        ($(\xmin,\ymin)+(0,#3+\hrw)$)
        arc (360:270:#3) --
        ($(\xmax,\ymin)+(#3,\hrw)$)
        arc (270:180:#3) --
        ($(\xmax,\ymax)+(0,-#3-\hrw)$)
        arc (180:90:#3) --
        cycle ;
    \draw[line width=\blw cm] ($(\xmin,\ymax)+(-#3,-\hrw)+(0,-\hbw)$)
        arc (90:0:#3) -- 
        ($(\xmin,\ymin)+(0,#3+\hrw+\hbw)$)
        arc (360:270:#3);
    \draw[line width=\blw cm] ($(\xmax,\ymax)+(#3,-\hrw)+(0,-\hbw)$)
        arc (90:180:#3) -- 
        ($(\xmax,\ymin)+(0,#3+\hrw+\hbw)$)
        arc (180:270:#3);   
}       

\begin{tikzpicture}
  \draw[McCurdy,rounded corners=1mm] (0,0) -- (1,0) coordinate (a) -- (3,0) coordinate (b) -- (4,0);
  \draw[McCurdy,rounded corners=1mm] (0,-1) -- (1.2,-1) coordinate (c) -- (2.7,-1) coordinate (d) -- (4,-1);
  \draw[McCurdy,rounded corners=1mm] (0,-2) -- (1.6,-2) coordinate (e) -- (2.0,-2) coordinate (f) -- (4,-2);
    \connector(a,c,0.15)
  \connector(b,d,0.2)
  \connector(c,e,0.05)
  \connector(d,f,0.1)
 \end{tikzpicture} 

\end{document}

輸出

在此輸入影像描述

相關內容