Casi seguro que no sabes quién es Micah McCurdy, pero aquí tienes una muestra de sus diagramas.en las páginas 20-21, por ejemplo, o la página 27 para algo más elegante. Le pregunté cómo los hacía y, lamentablemente, no es un método (La)TeX 'nativo', ya que implica dos paquetes de software separados.
Me gustaría poder hacer esto en TikZ o PSTricks, pero no sé nada sobre ninguno de estos. Este proyecto sería mi oportunidad de aprender. Me gustaría hacer algo modular, para ayudar a codificar diagramas como método de cálculo, en lugar de simplemente dibujarlos todos (en papel, por ejemplo) a mano y luego programarlos laboriosamente.
EDITAR: Gracias a Tom Bombadil por probar el ejemplo pegado por canaaerus, que fue un buen ejemplo de la complejidad visual posible, pero necesito los elementos gráficos especificados en las páginas 7 y 8 del pdf vinculado anteriormente, en conjunto. con cosas de la página 3. (Esto es solo para que haya un registro completo de lo que busco).
Respuesta1
Aquí hay un concepto, utilizacerola respuesta enLíneas triples en TikZ.
El código
\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}
La salida
Edición 1:Un concepto para dibujar "agujeros", pero sólo de arriba a abajo en líneas paralelas de izquierda a derecha. Se dibuja sobre las líneas existentes:
El código
\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}