Lista de bibliotecas TikZ disponibles con una breve introducción

Enlaces rápidos:

ResumenBiblioteca de interseccionesBiblioteca de puntas de flechaBiblioteca de decoracionesBiblioteca de cálculoBiblioteca de mapas mentalesBiblioteca de formasBiblioteca de plegado de papelBiblioteca de cadenasBiblioteca de formasContribuciones misceláneas a TikZ


Muy a menudo busco una biblioteca especial de TikZ. De momento no hay ningún paquete que cargue todas las librerías.

*¿Existe una lista de todas las bibliotecas disponibles con una breve introducción (2-3 frases)?

Quizás podamos recopilarlas aquí

Solución

Resumen

Aquí'está la lista de bibliotecas, y un breve resumen del propósito de cada una (cualquier código suministrado es para LaTeX y/o Plain TeX, no para ConTeXt):

  • Biblioteca de puntas de flecha con \usetikzlibrary{arrows.meta} (\usetikzlibrary{arrows} está obsoleta). Ver detalles más abajo
  • Automata Drawing Library, a la que se accede mediante \usetikzlibrary{automata}, y se utiliza para dibujar "autómatas de estado finito y máquinas de Turing". Para dibujar estos grafos, se define cada nodo, su nombre y posición relativa, así como los tipos de camino entre cada uno.
  • Biblioteca de fondos, a la que se accede mediante \usetikzlibrary{backgrounds}, y "define fondos para imágenes". Para utilizar esto en un Tikzpicture, se pasa una opción, por ejemplo, \begin{tikzpicture}[show background rectangle], con un estilo de rectángulo de fondo definido antes de la imagen. (por ejemplo, \tikzset{rectángulo de fondo/.style=}}.
  • Biblioteca Calc, a la que se accede a través de \usetikzlibrary{calc} para realizar cálculos complejos de coordenadas. Consulte los detalles a continuación.
  • Biblioteca Calendar, a la que se accede a través de \usetikzlibrary{calendar}. Esta biblioteca se utiliza para mostrar calendarios (supongo que es una cosa Ronseal). Se define un calendario como \calendar[opciones de visualización y opciones de fecha](Nombre (opcional)).
  • Librería de cadenas para alinear nodos o cadenas. Ver detalles más abajo
  • Librería Decorations para decorar rutas. Ver detalles más abajo
  • Entity Relationship Diagram Library, a la que se accede por \usetikzlibrary{er}, al igual que en la librería de dibujo de autómatas, se define cada nodo, cada arista entre cada nodo, así como cualquier atributo. Como nota de advertencia, el subrayado se debe utilizar para los atributos, pero esto no se utiliza, ya que es a la vez feo y difícil de implementar. En su lugar se utiliza la cursiva.
  • Biblioteca de intersecciones, accesible a través de \usetikzlibrary{intersections}, para calcular intersecciones de caminos. Ver detalles más abajo
  • Biblioteca de mapas mentales, se accede a través de \usetikzlibrary{mindmap}. Ver detalles más abajo.
  • Biblioteca de matrices, se accede a través de \usetikzlibrary{matrix}. Las matrices se definen de la misma manera que en el modo de matemáticas, sin embargo, cada elemento de la matriz se le asigna un valor como un nodo, a partir de 1. Cada nodo puede ser identificado y manipulado. Los delimitadores también se pueden seleccionar en las opciones de la matriz y pueden ser "cualquier delimitador que sea aceptable para el comando \left de TeX".
  • Biblioteca de plegado de papel \usetikzlibrary{folding}. Ver detalles más abajo
  • Biblioteca de patrones \usetikzlibrary{patterns}. Este paquete "define patrones para rellenar áreas". En la documentación se nombra cada patrón y se da un ejemplo.
  • Biblioteca Petri-Net. Sirve para dibujar Redes de Petri, como las que se utilizan para la modelización matemática. Al igual que en otros diagramas de flujo similares, se define cada nodo y arista, así como su estilo y posición. También se pueden incrustar fichas dentro de los nodos, tratándolos como hijos y nodos hijos.
  • Plot handler Library, accesible a través de \usetikzlibrary{plothandlers}. TikZ carga esta biblioteca automáticamente. Cada punto se define (como un nodo) para la parcela y el cada punto tiene una curva colocada
    • Plot Mark Library, se accede a través de \usetikzlibrary{plotmarks} se utiliza para definir estilos adicionales para las parcelas como se utilizó anteriormente. Cada punto se define como \pgfuseplotmark{Plot description}.
  • Biblioteca de formas, que se utiliza para definir formas distintas de rectángulo, círculo y coordenadas. Se accede a través de \usetikzlibrary{shapes} o \usetikzlibrary{shapes.shape type`}. Los siguientes tipos adicionales están disponibles: formas geométricas, ya sea con nombre formas (estrella, diamante, etc) o polígonos de números de lado especificado; formas símbolo, por ejemplo, "prohibido signo" como se utiliza en las señales de no fumar; "multipart" formas, con "múltiples (texto) partes";; y, por último, "misc" formas que "no encajan en las categorías anteriores", tales como cruces tachado. Ver detalles más abajo
  • A la librería Snake, a la que se accede a través de \usetikzlibrary{snakes} y que pueden describirse mejor como líneas curvas, y se utilizan entre nodos o como borde de una forma, o como formas independientes.
  • A la biblioteca Path, se accede a través de \usetikzlibrary{topaths}. Esta biblioteca se utiliza para definir trayectorias entre dos puntos, y se carga automáticamente. Además, puede tomar la forma de líneas curvas entre dos formas o como un bucle de vuelta a un nodo.
  • Biblioteca de árboles, a la que se accede a través de \usetikzlibrary{trees}. Cada punto en el árbol se define como un nodo, con los niños, y cada niño puede tener sus propios hijos. La dirección del árbol también se puede especificar, así como el ángulo en el que los niños emergen, sin embargo, cuando se deja a sus propios dispositivos, los resultados son aceptables. Fuentes: Todo lo que aparece entre comillas ha sido tomado del tikzpgfmanual, así como del ejemplo de calendario.
Comentarios (17)

Biblioteca de intersecciones

Accedido por \usetikzlibrary{intersections}

Descripción Permite el cálculo automatizado de intersecciones de caminos.

Ejemplo 1

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{intersections}

\begin{document}
\begin{tikzpicture}
    % Draw to path and give a name to them
    \draw [red, name path={red line}] (0,0) -- (4,3);
    \draw [blue, name path={blue curve}] (1,-0.5) to[out=80, in=100] (3,2);
    % use the intersections on a path to giv them coordinates
    % and draw a line between them
    \draw [green, name intersections={of=red line and blue curve, 
           by={first intersect, second intersect}}]
       (first intersect) -- (second intersect);
    % one can use the coordinates furtheron
    \node [above] at (first intersect) {A};
    \node [below] at (second intersect) {B};
\end{tikzpicture}
\end{document}

Ejemplo 2

\documentclass{standalone}% or wathever you want

% load packages
\usepackage{tikz, xcolor}
% load libraries
\usetikzlibrary{intersections,shapes.arrows,calc}

% define light and dark gray
\definecolor{lgray}{cmyk}{0,0,0,0.2}
\definecolor{dgray}{cmyk}{0,0,0,0.7}

% make some settings
\tikzset{%
    % style for the intersecting path, which
    % are nessesary for the calculation but
    % shouldn't be drawn in the final image
    ipath/.style={
%       draw,% comment this aout after construction
        red
    },
    % style for an arrow used as object
    optical arrow/.style={%
        fill=dgray,
        inner sep=3pt,
        shape=single arrow,
        minimum width=0.5cm,
        minimum height=1.5cm,
        outer sep=0pt,
        shape border rotate=90,
    },
    % style for the virtual image
    virtual optical arrow/.style={%
        fill=lgray,
        inner sep=3pt,
        shape=single arrow,
        minimum width=0.5cm,
        minimum height=1.5cm,
        outer sep=0pt,
        shape border rotate=90,
    },
    % style for the mirror
    mirror/.style={%
        line width=2pt,
    },
    % style for the axis
    optical axis/.style={%
        thin,
    },
    % style for light rays
    ray/.style={%
        thin,
        ->,
    },
    % style for imagined rays, which ar not real
    % but help by constructin the image
    imagined ray/.style={%
        ray, dgray, -,
    },
    % alias
    virtual ray/.style={imagined ray},
    % style for (focal) points
    point/.style={%
        fill=black,
        radius=0.8pt,
        inner sep=1pt,
        shape=circle,
        minimum size=2pt,
        outer sep=2pt
    },
}

% set three layers
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
% and define shortcuts to access them
\newcommand{\bglayer}[1]{%
    \begin{pgfonlayer}{background}%
    #1%
    \end{pgfonlayer}%
}
\newcommand{\fglayer}[1]{%
    \begin{pgfonlayer}{foreground}%
    #1%
    \end{pgfonlayer}%
}

\begin{document}
\begin{tikzpicture}
    % define the bounding box is nessesarx because the ipaths
    % make it bigger than needed
    \path [use as bounding box] (-5.2,-5) rectangle (6.2,5);
    % define variables, you may vary them a little
    %% radius
    \def\radius{5}
    \def\radiusII{5.05}
    %% focal distancs = \radius/2
    \def\focal{2.5}
    %% object size
    \def\size{1.cm}
    %% object width
    \def\owidth{1.25}
    % draw mirror
    %% the extra ipath is nessesary to get nicer rays
    \path [ipath, name path=M] (\radius,0) ++(90:\radius)
          arc (90:270:\radius);
    \fglayer{%
        \draw [mirror] (\radiusII-0.05,0) ++(130:\radiusII)
              arc (130:240:\radiusII);
    }
    % draw focal point
    \node (B) at (\focal,0) [point] {};
    % draw object
    \node (O) [optical arrow,anchor=tail, minimum height=\size] %
          at (\owidth,0) {};
    %% description
    \node [above right] at (O.tip) {object};
    % rays
    %% draw axis ray
    \draw [ray] (O.tip) -- (0,0) -- ($(0,0)!3!(\owidth,-\size)$);
    %% draw parallel ray
    \path [ipath, name path=PS] (O.tip) -- ++(-3,0);
    \draw [ray, name intersections={of=M and PS, by=M-PS}]
        (O.tip) -- (M-PS) -- ($(M-PS)!2!(B)$);
    %% caculate virtual axis ray
    \path [ipath, name path=AS-V] ($(0,0)!-4!(\owidth,-\size)$) -- (0,0);
    %% calculate virtual parallel ray
    \path [ipath, name path=PS-V] ($(M-PS)!-4!(B)$) -- (M-PS);
    %% draw virtual axis ray
    \draw [imagined ray, name intersections={of=AS-V and PS-V, by=Tip-V}]
        (Tip-V) -- (0,0);
    %% draw virtual axis ray
    \draw [imagined ray] (Tip-V) -- (M-PS);
    % draw virtual object
    \bglayer{\path let \p{1}=(Tip-V) in 
        (Tip-V) node (V) [minimum height=\size,
                          scale={\y{1}/\size*0.665},
                          virtual optical arrow,anchor=tip
                         ] {};}
    %% description
    \path (V.west) node [left] {virtual image};
    % draw optical axis
    \fglayer{\draw [optical axis] (-5,0) --++(11,0);}
\end{tikzpicture}
\end{document}

Referencia pgfmanual.pdf, pp. 131 y ss.

Comentarios (3)

Biblioteca de plegado de papel

Accedido por \usetikzlibrary{folding}

Descripción

Contiene un único comando, pero es útil para producir calendarios reales (como los que se usan en un escritorio).

Ejemplo

\documentclass{standalone}

\usepackage{tikz, xcolor}
\usetikzlibrary{folding,calendar}
\begin{document}
\sffamily\scriptsize
\begin{tikzpicture}[transform shape]
\tikzstyle{every calendar}=
[
    %Formats calendars and sets positions
    at={(-8ex,4ex)},
    week list,
    month label above centered,
    month text=\bfseries\textcolor{red}{\%mt} \%y0,
    if={(Sunday) [black!50]}
    ]
\tikzfoldingdodecahedron
[
    %Sets size of calendar
    folding line length=2.5cm,
    %Adds calendar image to each face
    face 1={ \calendar [dates=\the\year-01-01 to \the\year-01-last];},
    face 2={ \calendar [dates=\the\year-02-01 to \the\year-02-last];},
    face 3={ \calendar [dates=\the\year-03-01 to \the\year-03-last];},
    face 4={ \calendar [dates=\the\year-04-01 to \the\year-04-last];},
    face 5={ \calendar [dates=\the\year-05-01 to \the\year-05-last];},
    face 6={ \calendar [dates=\the\year-06-01 to \the\year-06-last];},
    face 7={ \calendar [dates=\the\year-07-01 to \the\year-07-last];},
    face 8={ \calendar [dates=\the\year-08-01 to \the\year-08-last];},
    face 9={ \calendar [dates=\the\year-09-01 to \the\year-09-last];},
    face 10={\calendar [dates=\the\year-10-01 to \the\year-10-last];},
    face 11={\calendar [dates=\the\year-11-01 to \the\year-11-last];},
    face 12={\calendar [dates=\the\year-12-01 to \the\year-12-last];},
];
\end{tikzpicture}
\end{document}

Referencia pgfmanual.pdf, pp. 202 y ss.

Comentarios (2)