Lista de disponibil TikZ biblioteci cu o scurtă introducere

Link-uri rapide:

SumarIntersecții bibliotecaSăgeată sfaturi de bibliotecăDecoratiuni biblioteciCalc bibliotecaMindmap bibliotecaForme de bibliotecăPliere hârtie bibliotecaLanțuri de bibliotecăForme de bibliotecăAltele contribuții la TikZ


De foarte multe ori am căuta-o bibliotecă specială de TikZ. În momentul de față nu există nici un pachet care încarcă fiecare bibliotecă.

Există o listă a tuturor biblioteci disponibile cu o scurtă introducere (2-3 fraze)?

poate vom colecta-le aici

Comentarii la întrebare (10)
Soluția

Rezumat

Aici's lista de biblioteci, precum și un scurt rezumat al scopului pe care fiecare (orice cod este furnizat pentru LaTeX și/sau Plain TeX, nu de ConTeXt):

  • Săgeată sfat bibliotecă cu \usetikzlibrary{săgeți.meta} (\usetikzlibrary{săgeți} este învechită). A se vedea detaliile de mai jos.
  • Automate de Desen Bibliotecă, accesate de către \usetikzlibrary{automate}, și este folosit pentru desen "stări finite automate și Mașini Turing". Pentru a desena aceste grafice, fiecare nod, numele și poziția relativă este definită, precum și tipurile de drum între fiecare.
  • Fond de Bibliotecă, accesate de către \usetikzlibrary{medii}, și "definește fundal pentru imagini". Pentru a utiliza acest lucru într-un Tikzpicture, o opțiune este trecut, de exemplu \begin{tikzpicture}[show de fundal dreptunghi], cu un fundal dreptunghi stil definit înainte de imagine. (de exemplu \tikzset{background dreptunghi/.style={<defini fundal dreptunghi stil aici>}}
  • Calc bibliotecă, accesate prin \usetikzlibrary{calc} pentru a face complex de coordonate calcule. A se vedea detaliile de mai jos.
  • Calendar Bibliotecă, accesate prin \usetikzlibrary{calendar}. Această bibliotecă este utilizat pentru a afișa calendare (cred că-l's o Ronseal lucru). Ai defini un calendar ca \calendar[opțiuni de afișare și data opțiuni](Numele (opțional)).
  • Lanț biblioteca pentru a alinia noduri oana lanțuri. A se vedea detaliile de mai jos.
  • Decoratiuni biblioteci pentru a decora căi. A se vedea detaliile de mai jos.
  • Entity Relationship Diagram Bibliotecă, accesate de către \usetikzlibrary{er}, la fel ca în automate de desen bibliotecă, fiecare nod este definit, cum este fiecare muchie între fiecare nod, precum și orice atribute. Ca o notă de avertizare, subliniind ar trebui să fie utilizate pentru atribute, dar acest lucru nu este folosit, deoarece este atât de urât și dificil de implementat. Italice sunt utilizate în locul.
  • Intersecția bibliotecă, accesate prin \usetikzlibrary{intersecții}, pentru a calcula intersecții de drumuri. A se vedea detaliile de mai jos.
  • Vezi-harta bibliotecă, accesate prin \usetikzlibrary{mindmap}. A se vedea detaliile de mai jos.
  • Matricea de Bibliotecă, accesate prin \usetikzlibrary{matrix}. Matricele sunt definite în același mod ca și în matematică mod, cu toate acestea, fiecare element din matrice ca atribuie o valoare ca un nod, pornind de la 1. Fiecare nod poate fi apoi identificate și manipulat. Delimitatori poate fi, de asemenea, selectate în matricea opțiuni și pot fi "orice delimitator, care este acceptabil pentru TeX s \plecat command".
  • Pliere hârtie biblioteca \usetikzlibrary{pliere}. A se vedea detaliile de mai jos.
  • Model de Biblioteca \usetikzlibrary{modele}. Acest pachet "definește modele pentru completarea zone". În documentație, fiecare model este numit și un exemplu dat.
  • Petri-Net Library. Acest lucru este folosit pentru a desena rețele Petri, așa cum este folosit pentru modelarea matematic. Similar altor organigrama stil de diagrame, fiecare nod și marginea este definit, precum și stilul lor și poziția. Token-uri pot fi, de asemenea, încorporat în noduri, tratându-le ca pe niște copii și noduri copil.
  • Complot handler Bibliotecă, accesate prin \usetikzlibrary{plothandlers}. TikZ încarcă această bibliotecă automat. Fiecare punct este definit (ca un nod) pentru complot și fiecare punct are o curbă plasate
  • Teren Marca Bibliotecă, accesate prin \usetikzlibrary{plotmarks} este folosit pentru a defini stiluri suplimentare pentru terenuri, cum este utilizat de mai sus. Fiecare punct este definit ca \pgfuseplotmark{descrierea scenariului}.
  • Forma biblioteca, folosit pentru a defini alte forme decât dreptunghi, cerc și co-ordonator. Accesate fie prin \usetikzlibrary{forme} " sau " \usetikzlibrary{forme.forma}. Următoarele tipuri suplimentare sunt disponibile: forme geometrice, fie numit forme (stea, diamant, etc.) sau poligoane de specificat partea numere; simbol forme, de exemplu, "semn de interzis", cum este utilizat în semne de Fumat; "mai multe" forme, cu "mai multe (text) piese"; și în cele din urmă, "misc" forme care "nu se încadrează în categoriile anterioare", cum ar fi de grevă prin cruci. A se vedea detaliile de mai jos.
  • Șarpe biblioteca, ca accesate prin \usetikzlibrary{șerpi} și poate fi cel mai bine descris ca linii curbe, și sunt utilizate fie între noduri sau ca o graniță într-o formă , sau ca forme independente.
  • La Calea bibliotecă, accesate prin \usetikzlibrary{topaths}. Această bibliotecă este folosit pentru a defini căi între două puncte, și este încărcat automat. În plus, aceasta poate lua forma unei linii curbe între două forme sau ca o buclă înapoi la un nod.
  • Copac bibliotecă, accesate prin \usetikzlibrary{copaci}. Fiecare punct de pe copac este definit ca un nodul, cu copii, și fiecare copil poate avea propriile sale copii. Copac's direcție poate fi, de asemenea, menționate, precum și unghiul la care copiii ies, cu toate acestea, când la stânga la propriile dispozitive, rezultatele sunt acceptabile. Surse: Nimic în ghilimele a fost ridicat de pe tikzpgfmanual, precum și calendarul de probă.
Comentarii (17)

Săgeată sfaturi bibliotecă

Accesat de \usetikzlibrary{săgeți.meta}

Descriere: Oferă diverse nouă și personalizabile săgeată sfaturi

Exemplu

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{arrows.meta}

\begin{document}
\begin{tikzpicture}
\foreach \arrowtipkind[count=\i from 0] in {
Circle,
Diamond,
Ellipse,
Kite,
Latex,
Rectangle,
Square,
Stealth,
Triangle,
Turned Square,
Arc Barb,
Bracket,
Hooks,
Tee Barb,
Parenthesis,
Implies,
Butt Cap,
Fast Round,
Fast Triangle,
Round Cap,
Triangle Cap}{\foreach \specs[count=\j from 0] in {round, open, fill=red, {round, fill=blue, length=2.5mm, slant=.5}}{\draw[-{\arrowtipkind[\specs]}, yshift=-1.5*\i cm -0.2*\j cm] (0,0) -- +(1,0)\ifnum\j=0 node[above,midway,font=\scriptsize\ttfamily]{\arrowtipkind}\fi;};};
%%% Tips with particular options:
% Arc Barb[sep, arc=, length=, line width=, width=, reversed, round, slant=, harpoon, left, right, ]
% Bracket[sep, reversed, round, slant=, left, right, harpoon, reversed, ]
% Hooks[sep, arc=, length=, line width=, width=, reversed, round, slant=, harpoon, left, right, ]
% Tee Barb[sep, inset=, inset'= , line width=, reversed, round, slant=, harpoon, left, right, ] thin thick
% Implies[]
\end{tikzpicture}
\end{document}

De referință

TikZ/PGF 3.0.1 un Manual secțiunea Săgeți.

Comentarii (2)

Intersecții bibliotecă

Accesate de către \usetikzlibrary{intersecții}

Descriere Permite calculul automatizat de calea de intersecții.

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

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

Referință pgfmanual.pdf, pp. 131 et sec.

Comentarii (3)

Calc bibliotecă

Accesate de către \usetikzlibrary{calc}

Descriere Permite extins coordonarea calcul

Exemplu

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
    % make some mathematical calculations
    \node (a) at (1,1) {A};
    \fill [red] ($(a) + 1/3*(1cm,0)$) circle (2pt);
    % draw a segment of a path between two points
    \coordinate (b) at (0,0);
    \coordinate (c) at (0.5,3);
    \fill (b) circle (1pt) (c) circle (1pt);
    \draw [blue!50!green, ->] (b) -- ($(b)!1.5!(c)$);
    \draw [blue, ->] (b) -- ($(b)!0.5!(c)$);
    % draw a parallel line
    \draw [green] (2,0) coordinate (d) -- (3,4) coordinate (e);
    \draw [green, dashed] (2.5,1) -- ++($(e)-(d)$);
\end{tikzpicture}
\end{document}

Referință pgfmanual.pdf.

Comentarii (3)

Pliere Hârtie Bibliotecă

Accesate de către \usetikzlibrary{pliere}

Descriere

Acesta conține o singură comandă, dar este util pentru producerea real calendare (așa cum este folosit pe un desktop).

Exemplu

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

Referință pgfmanual.pdf, pp. 202 et sec.

Comentarii (2)

Forme de bibliotecă

Accesate de către \usetikzlibrary{forme}

Descriere Permite forme pentru a fi introduse ca parte dintr-o schemă logică

Exemplu

\documentclass{standalone}

\usepackage{tikz, xcolor}
\usetikzlibrary{shapes,arrows}

\tikzstyle{decision} = [diamond, draw, text width=4.5em, 
                        text badly centered, node distance=2cm, 
                        inner sep=0pt]
\tikzstyle{block} = [rectangle, draw, text width=5em, 
                     text centered, rounded corners, 
                     minimum height=4em, node distance=3cm]
\tikzstyle{line} = [draw, -latex']
\tikzstyle{cloud} = [draw, ellipse, node distance=2.5cm, minimum height=2em]
\tikzstyle{blank} = [node distance=1cm]

\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
    % Place nodes
    \node [cloud] (init) {n};    
    \node [blank, below of=init] (sup) {};
    \node [decision, below of=sup] (square) {$n^2 \le 1$};
    \node [cloud, right of=square] (end) {End};
    \node [block, left of=square] (newN) {$n = \frac{2}{n}$};

    % Draw edges
    \path [line] (init) -- (square);
    \path [line] (square) -- node [near start] {yes} (end);
    \path [line] (square) -- node [near start] {no} (newN);
    \path [line] (newN) |- (sup);
\end{tikzpicture}
\end{document}

Referință http://www.texample.net/tikz/examples/simple-flow-chart/ Folosit ca o bază pentru a începe, stil suplimentar (blank) utilizat ca un suport, de exemplu la o întrebare a cerut de la universitatea interviu.

Comentarii (0)

Mindmap Bibliotecă

Accesate de către \usetikzlibrary{mindmap}

Descriere

Principalul punct de focalizare, este plasat în mijloc, cu sub-puncte de ramificare off. Fiecare nod este definit, ca sunt copiii săi. Nodurile pot fi, de asemenea, separate unul de altul, și fiecare nod poate fi, de asemenea, colorate diferit și interconectate. Adnotările sunt de asemenea disponibile.

Exemplu

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{mindmap,backgrounds}

\begin{document}
\tikzstyle{root concept}+=[concept color=blue!20,minimum size=2cm]
\tikzstyle{level 1 concept}+=[sibling angle=45]

\begin{tikzpicture}[mindmap]
\node [concept] (n1) {Stack Exchange Sites}
    child[concept color=red,grow=45] {node[concept] (c1) {Meta}}
    child[concept color=orange,grow=0] {node[concept] (c2) {Q \& A}}
    child[concept color=green,grow=-45] {node[concept] (c3) {Chat}};
\begin{pgfonlayer}{background}
\draw [concept connection] (c1) edge (c2)
                                edge (c3)
                           (c2) edge (c3);
\end{pgfonlayer}

\node [extra concept] at (0,10) (n2) {\TeX {} and \LaTeX {}Stack Exchange}
    child[concept color=red,grow=45] {node[concept] (s1) {Meta}}
    child[concept color=orange,grow=0] {node[concept] (s2) {Q \& A}}
    child[concept color=green,grow=-45] {node[concept] (s3) {Chat}};

\begin{pgfonlayer}{background}
    \draw [concept connection] (s1) edge (s2)
                                    edge (s3)
                               (s2) edge (s3)
                               (n1) edge (n2);
\end{pgfonlayer}
\end{tikzpicture}

\end{document}

Referință pgfmanual.pdf, pp. 207 și urm.

Comentarii (0)

Lanțuri De Bibliotecă

Accesate de către \usetikzlibrary{lanțuri}

Descriere

Lanțurile sunt secvențe de noduri, care sunt aranjate într-un rând sau o coloană și care sunt, de obicei, conectate prin muchii. Mai mult, în general, ele pot fi folosite pentru a poziționa noduri de ramificare a rețelei într-o manieră sistematică. Pentru poziționarea nodurilor în rânduri și coloane, puteți utiliza, de asemenea, matrici (a se vedea Secțiunea a 17-a pgfmanual.pdf), dar lanțurile pot fi, de asemenea, folosit pentru a descrie legăturile dintre nodurile care au fost deja conectat cu, să zicem, matrici. Astfel, se face de multe ori sens pentru a utiliza matrici pentru poziționarea elementelor și lanțuri pentru a descrie conexiunile.

Exemplu, cu Lanțuri

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes,% for the rectangle
                chains,% provides the chains
                scopes}% allows to replace \begin{scope} \end{scope} with {}

\begin{document}
\begin{tikzpicture}[
  nonterminal/.style={
    rectangle, 
    minimum size=6mm, 
    very thick, 
    draw=red!50!black!50, 
    top color=white, % a shading that is white at the top...
    bottom color=red!50!black!20, % and something else at the bottom
    font=\itshape
  },
  terminal/.style={
    rectangle,minimum size=6mm,rounded corners=3mm,
    very thick,draw=black!50,
    top color=white,bottom color=black!20,
    font=\ttfamily
  },
  node distance=5mm, every on chain/.style={join}, every join/.style={->}
]
{ [start chain]
  \node [on chain,nonterminal] {unsigned integer};
  \node [on chain,terminal] {.};
  \node [on chain,terminal] {digit};
  \node [on chain,terminal] {E};
  { [start branch=plus]
    \node (plus) [terminal,on chain=going above right] {+};
  }
  { [start branch=minus]
    \node (minus) [terminal,on chain=going below right] {-};
  }
  \node [on chain, nonterminal, join=with chain/plus-end, join=with chain/minus-end] {unsigned integer};
}
\end{tikzpicture}
\end{document}

Exemplu cu Matrice și Lanțuri

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes,% for the rectangle
                chains,% provides the chains
                scopes}% allows to replace \begin{scope} \end{scope} with {}

\begin{document}
\begin{tikzpicture}[
  nonterminal/.style={
    rectangle, 
    minimum size=6mm, 
    very thick, 
    draw=red!50!black!50, 
    top color=white, % a shading that is white at the top...
    bottom color=red!50!black!20, % and something else at the bottom
    font=\itshape
  },
  terminal/.style={
    rectangle,minimum size=6mm,rounded corners=3mm,
    very thick,draw=black!50,
    top color=white,bottom color=black!20,
    font=\ttfamily
  },
  every on chain/.style={join}, every join/.style={->}
]

\matrix[column sep=4mm] {
  % First row:
  & & & & \node (plus) [terminal] {+};&\\
  % Second row:
  \node (ui1)   [nonterminal] {unsigned integer};&
  \node (dot)   [terminal]    {.};               &
  \node (digit) [terminal]    {digit};           &
  \node (e)     [terminal]    {E};               &
  & % space in between
  \node (ui2) [nonterminal] {unsigned integer};\\
  % Third row:
  & & & & \node (minus)[terminal] {-};&\\
  };

{ [start chain]
  \chainin (ui1);
  \chainin (dot);
  \chainin (digit);
  \chainin (e);
  { [start branch=plus]
    \chainin (plus);
  }
  { [start branch=minus]
    \chainin (minus);
  }
  \chainin (ui2) [join=with chain/plus-end, join=with chain/minus-end];
}
\end{tikzpicture}
\end{document}

Lanțuri cu Etichetele

Uneori este nevoie să adăugați labes la marginile creat de "lanțuri" de bibliotecă (asta mi s-a întâmplat înainte). Deși nu este suportat nativ de bibliotecă, o poti face prin tweaking biblioteca.

Un exemplu este:

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes,% for the rectangle
                chains,% provides the chains
                scopes}% allows to replace \begin{scope} \end{scope} with {}

\makeatletter
\def\tikz@lib@parse@join#1{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
    \tikz@lib@parse@join@by by \pgf@stop%
  \else%
    \pgfutil@in@{with }{#1}% 
    \ifpgfutil@in@% 'with [by] [label]'
      \pgfutil@in@{by }{#1}%
      \ifpgfutil@in@% 'with by [label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'with by label'
          \tikz@lib@parse@join@with@by@label#1\pgf@stop%
        \else% 'with by'
          \tikz@lib@parse@join@with@by#1\pgf@stop%
        \fi%
      \else% 'with [label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'with label'
          \tikz@lib@parse@join@with@label#1\pgf@stop%
        \else% with
          \tikz@lib@parse@join@with@by#1 by \pgf@stop%
        \fi%
      \fi%
    \else% '[by] [label]'
      \pgfutil@in@{by }{#1}%
      \ifpgfutil@in@% 'by [label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'by label'
          \tikz@lib@parse@join@by@label#1\pgf@stop%
        \else% 'by'
          \tikz@lib@parse@join@by#1\pgf@stop%
        \fi%
      \else% '[label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'label'
          \tikz@lib@parse@join@label#1\pgf@stop%
        \else%
          \tikz@lib@parse@join@by#1 by \pgf@stop%
        \fi%
      \fi%
    \fi%
  \fi%
}
\def\tikz@lib@parse@join@with@by@label with #1 by #2 label #3\pgf@stop{%
  \tikzset{after node path={(#1)edge[every join,#2]#3(\tikzchaincurrent)}}%
}
\def\tikz@lib@parse@join@with@label with #1 label #2\pgf@stop{%
  \tikzset{after node path={(#1)edge[every join]#2(\tikzchaincurrent)}}%
}
\def\tikz@lib@parse@join@by@label by #1 label #2\pgf@stop{%
  \tikzset{after node path={\ifx\tikzchainprevious\pgfutil@empty\else(\tikzchainprevious)edge[every join,#1]#2(\tikzchaincurrent)\fi}}%
}
\def\tikz@lib@parse@join@label label #1\pgf@stop{%
  \tikzset{after node path={\ifx\tikzchainprevious\pgfutil@empty\else(\tikzchainprevious)edge[every join]#1(\tikzchaincurrent)\fi}}%
}
\makeatother

\begin{document}
\begin{tikzpicture}[
  nonterminal/.style={
    rectangle, 
    minimum size=6mm, 
    very thick, 
    draw=red!50!black!50, 
    top color=white, % a shading that is white at the top...
    bottom color=red!50!black!20, % and something else at the bottom
    font=\itshape
  },
  terminal/.style={
    rectangle,minimum size=6mm,rounded corners=3mm,
    very thick,draw=black!50,
    top color=white,bottom color=black!20,
    font=\ttfamily
  },
  every on chain/.style={join}, every join/.style={->}
]

\matrix[column sep=4mm] {
  % First row:
  & & & & \node (plus) [terminal] {+};&\\
  % Second row:
  \node (ui1)   [nonterminal] {unsigned integer};&
  \node (dot)   [terminal]    {.};               &
  \node (digit) [terminal]    {digit};           &
  \node (e)     [terminal]    {E};               &
  & % space in between
  \node (ui2) [nonterminal] {unsigned integer};\\
  % Third row:
  & & & & \node (minus)[terminal] {-};&\\
  };

{ [start chain]
  \chainin (ui1);
  \chainin (dot);
  \chainin (digit);
  \chainin (e);
  { [start branch=plus]
    \chainin (plus) [join=label {node[above left]{a label}}];
  }
  { [start branch=minus]
    \chainin (minus);
  }
  \chainin (ui2) [join=with chain/plus-end label {node[above right] {plus label}}, join=with chain/minus-end by dashed label {node [below right]{minus label}}];
}
\end{tikzpicture}
\end{document}

Referință

pgfmanual.pdf, pp. 284 și urm. Exemple sunt o versiune simplificată a Tutorial: Pune o Diagramă în Lanțuri, de 60 pp.

Comentarii (0)

Forme de bibliotecă

Accesate de către \usetikzlibrary{forme, forme.geometrice, forme.simboluri, forme.săgeți, forme.mai multe părți, forme.explicații, forme.misc}

Descriere Oferi mai multe forme în afară de cele standard

Exemplu

\documentclass[parskip]{scrartcl}
\usepackage[margin=5mm,a3paper]{geometry}
\usepackage{kerkis}
\usepackage{tikz}
\usetikzlibrary{
    shapes,
    shapes.geometric,
    shapes.symbols,
    shapes.arrows,
    shapes.multipart,
    shapes.callouts,
    shapes.misc}

\begin{document}

\tikzset{every node/.style={draw=red!20!black,fill=orange!50!red!50!white,text=black,inner sep=2pt}}

{\LARGE \textbf{Standard shapes}}\\
\foreach \shape in {circle,rectangle}
{   \begin{tikzpicture}
        \node[shape=\shape] {\shape};
    \end{tikzpicture}
}
\\\hrule

{\LARGE \textbf{Geometric shapes}}\\
\foreach \shape in {diamond,ellipse,trapezium,semicircle,regular polygon,star,isosceles triangle,kite,dart,circular sector,cylinder}
{   \begin{tikzpicture}
        \node[shape=\shape] {\shape};
    \end{tikzpicture}
}
\\\hrule

{\LARGE \textbf{Symbol shapes}}\\
\foreach \shape in {forbidden sign,magnifying glass,cloud,starburst,signal,tape}
{   \begin{tikzpicture}
        \node[shape=\shape] {\shape};
    \end{tikzpicture}
}
\\\hrule

{\LARGE \textbf{Arrow shapes}}\\
\foreach \shape in {single arrow,double arrow,arrow box}
{   \begin{tikzpicture}
        \node[shape=\shape] {\shape};
    \end{tikzpicture}
}
\\\hrule

{\LARGE \textbf{Multipart shapes}}\\
\foreach \shape in {circle split,circle solidus,ellipse split,rectangle split}
{   \begin{tikzpicture}
        \node[shape=\shape] {\shape};
    \end{tikzpicture}
}
\\\hrule

{\LARGE \textbf{Callout shapes}}\\
\foreach \shape in {ellipse callout,rectangle callout,cloud callout}
{   \begin{tikzpicture}
        \node[shape=\shape] {\shape};
    \end{tikzpicture}
}
\\\hrule

{\LARGE \textbf{Miscellaneous shapes}}\\
\foreach \shape in {cross out,strike out,rounded rectangle,chamfered rectangle}
{   \begin{tikzpicture}
        \node[shape=\shape] {\shape};
    \end{tikzpicture}
}

\end{document}

Referință pgfmanual.pdf, paginile 419 461

Comentarii (1)

Am creat un PDF cu toate bibliotecile și o definiție scurtă de pfdmanual.

Puteți găsi PDF aici masa-biblioteca

L's o prima versiune si nu am recitit sau corectate și cred că scopul nu este bine. Ultima biblioteci despre grafice nevoie luatex.

Comentarii (6)

Altele contribuții la TikZ (70)

Poate că acest lucru nu este locul potrivit pentru a pune acest răspuns, dar cred că pot ajuta pe cineva. Aici este un link care conține mai multe contribuții la TikZ, unele dintre ele trebuie să fie încărcate ca pachete, iar unele pot fi încărcate în mod obișnuit ca biblioteci prin \usetikzlibrary dar nu sunt documentate în TikZ/PGF manual, în schimb, ei au propriile lor documentația de astfel de pachete. Am'll lista unele dintre pachete/biblioteci și o foarte scurtă descriere a ceea ce face

  • noduri (tikz bibliotecă): furnizarea de mediu să elaboreze noduri cu ușurință de calcul intersecție și în mod automat se împart în mai multe căi unul peste altul.
  • adunat (tikz bibliotecă): o implementare de John Hobby's algoritm pentru a produce o curbă printr-un anumit set de puncte, permite personalizare mai departe de curba decât normal "complot" operator și rezultatul său fără nici o personalizare este semnificativ mai bună decât "complot".
  • pădure: oferte extrem de îmbunătățit copac desen mecanism decât de doar TikZ, ar trebui cu siguranță să fie luate în considerare înainte de desen de un copac cu TikZ.
  • tikz-cd: oferă sprijin prin intermediul predefinite, macro-uri și setările implicite pentru desen diagrame comutative.
  • prooftree: oferă suport pentru desen prooftrees, pachetul este axat pe matematica prooftrees folosit pentru a preda matematica.
  • pgf-spectra: utilizează ușor sintaxa pentru a trage spectru de elemente (în prezent, 99 disponibile)
  • bloques: oferă un set de macro-uri pentru a facilita desenarea de diagrame bloc utilizate în teoria controlului (inginerie).
  • circuitikz: folosit pentru a desena circuite electronice.
  • tikzscale: oferă unele interfață între tikzpicture și\includegraphics` oferind metode de scalare pentru tikzpictures. Am numărat 65 contribuții în fosta link-ul, citat mai sus nu sunt cele mai bune, nici speciale, în orice mod, L's doar cele pe care eu'am venit peste cu.

    Izolat contribuții:

    Am'am, de asemenea, găsite în ghidul de's @Qrrbrbirlbel (cum se spune asta?) 5 neet biblioteci (da ei're încărcate cu \usetikzlibrary), din păcate fără manuale și nu sunt disponibile prin CTAN (sperăm au'll ajunge acolo), dar poate fi descărcat în Qrrbrbirlbel's de pe contul GitHub, mai jos este o apropiere de copy paste al lui "Despre mine" profil text:

  • nod-familii De nod-familiilor biblioteca a fost dezvoltat ca răspuns la ["Dependente nod size"](https://tex.stackexchange.com/q/107227/16595) în cazul în care OP cere automat re-dimensionarea legate de noduri astfel încât acestea să aibă aceeași dimensiune minimă. Utilizați următoarele taste pentru a atribui un nod la o anumită familie de noduri care trebuie să aibă aceleași dimensiuni. Aceasta funcționează pe o per-imagine de bază și folosește.aux fișier, astfel încât veți avea nevoie de ** cel puțin două compilații.
  • Minim Width=`;
  • Minim Height=`;
  • Text Height=<familia>;
  • Text Width=<familia>.
  • căile.orto([cod de fișier aici](https://github.com/Qrrbrbirlbel/pgf/blob/master/tikzlibrarypaths.ortho.tex) și [lib fișier aici](https://github.com/Qrrbrbirlbel/pgf/blob/master/tikzlibrarypaths.ortho.tex)) Această bibliotecă introduce calea de operatori, cum ar fi orizontale-verticale Ti*k*Z în mod natural a (|- "și" -|), dar mai avansat, ca|-|și-|-`. Acest answer și aceasta conțin mai multe informații despre biblioteca.
  • paths.rectangle Anii căi.dreptunghi biblioteca oferă două similare cronometre (funcțiile acel loc noduri de-a lungul căi) dedreptunghicalea operator. De obicei, atunci când faci\draw (0,0) dreptunghi nod[pos=x]{O} (1,1)nodul " A " va fi plasat într-o poziție de-a lungul liniei care leagă cele două coordonate, cu căi.rectangle, x poate presupune valori mai mari de 1 (pana la 2), care reprezintă reale dreptunghi cale, nu pe linia dintre coordonatele, ca mai bine explicată în acest răspuns.
  • patterns.images Această bibliotecă vă permite forme pentru a fi umplut cu imaginea modele, mult mai util pentru a crea imagini cu texturi. L's a explicat în acest răspuns.
  • positioning-plus Acesta oferă o modalitate de poziționare un nod în legătură cu multe altele, oferind, de asemenea, capacitatea de a face nod la fel de mare ca un set de noduri se întinde. În afară de faptul că are mai multe opțiuni de poziționare decât cea original `de poziționare biblioteca, deoarece nu există nici un manual informațiile trebuie să fie adunate de la TeX.SX motor de căutare (acest link auto căutări cu filtre corespunzătoare)
Comentarii (0)

Decor biblioteci

Accesat de \usetikzlibrary{decoratiuni.<numele de decorare biblioteca>} Descriere După cum spune și numele, aceste biblioteci decora o cale. Uneori calea este chiar înlocuit cu o cale diferită. Fiecare decor biblioteca este precizat mai jos. Folosi Ctrl + F (pentru Windows) pentru a ajunge la biblioteca de care ai nevoie.

Calea morphing decoratiuni

Accesat de \usetikzlibrary{decoratiuni.pathmorphing} Descriere [din TikZ manual] O cale morphing decor "morphs" sau "se deformează" a-fi-decorat calea. Aceasta înseamnă că ceea ce folosit pentru a fi o linie dreaptă poate fi apoi unduindu-o curbă și au umflaturi. Exemplu

\documentclass[tikz,margin=1]{standalone}
\usetikzlibrary{decorations.pathmorphing}
\def\y{0}
\newcommand\decorated[1]{
    \tikzset{decoration=#1}
    \draw[thin,red] (0,\y) to[bend left] (1,\y);
    \filldraw[decorate,fill=yellow!60,very thick] (0,\y) to[bend left] (1,\y)
        node[right,font=\ttfamily] {#1};
    \let\auxy\y
    \pgfmathsetmacro\y{\auxy+1}
}
\begin{document}
\begin{tikzpicture}[y=-1cm,x=3cm]
\decorated{lineto}
\decorated{straight zigzag}
\decorated{random steps}
\decorated{saw}
\decorated{zigzag}
% We are not able to use our command here :(
\tikzset{decoration=bent}
\draw[thin,red] (0,\y) -- (1,\y);
\filldraw[decorate,fill=yellow!60,very thick] (0,\y) -- (1,\y)
    node[right,font=\ttfamily] {bent};
\let\auxy\y
\pgfmathsetmacro\y{\auxy+1}
% %
\decorated{bumps}
\decorated{coil}
\decorated{curveto}
\decorated{snake}
\end{tikzpicture}
\end{document}

Cale înlocuirea decoratiuni

Accesat de \usetikzlibrary{decoratiuni.pathreplacing} Descriere [din TikZ manual] Această bibliotecă definește decoratiuni care a înlocui a-fi-decorat calea către o altă cale. Spre deosebire de morphing decoratiuni, înlocuit cale ar putea fi destul de diferite, de exemplu, o linie dreaptă, ar putea fi înlocuit printr-un set de cercuri. Exemplu

  • Cele mai multe decoratiuni de latex \documentclass[tikz,marja=1]{independentă} \usetikzlibrary{decoratiuni.pathreplacing} \def\y{0} \newcommand\decorate[1]{ \tikzset{decor=#1} \atrag[subțire,roșu] (0,\y) să[se aplece stânga] (1,\y); \atrag[decora,foarte gros] (0,\y) să[se aplece stânga] (1,\y) nod[dreapta,font=\ttfamily] {#1}; \sa\auxy\y \pgfmathsetmacro\y{\auxy+1} } \begin{document} \begin{tikzpicture}[y=-1,x=3cm] \decorate{frontieră} % Nu suntem capabili de a utiliza comanda noastră aici :( \tikzset{decor=bretele} \atrag[subțire,roșu] (0,\y) -- (1,\y); \atrag[decora,foarte gros] (0,\y) -- (1,\y) nod[dreapta,font=\ttfamily] {bretele}; \sa\auxy\y \pgfmathsetmacro\y{\auxy+3} % % \decorate{extinderea valuri} \sa\auxy\y \pgfmathsetmacro\y{\auxy+1.5} \decorate{căpușe} \decorate{valuri} \end{tikzpicture} \end{document}
  • Decorul special: arată calea constructii. ``de latex % Sursa: TikZ - PGF manual de utilizare versiunea 3.1.3, 9 2019, pagina 636 \documentclass[tikz,marja=1]{independentă} \usetikzlibrary{decoratiuni.pathreplacing} \begin{document} \begin{tikzpicture}[

    =stealth, fiecare nod/.style={la jumătatea distanței, înclinate, fontul=\mici}, decor={ arăta calea de construcție, moveto cod={ \umple [red] (\tikzinputsegmentfirst) cerc (2pt) nod [a se completa=nici unul, sub] {moveto};}, lineto cod={ \atrag [albastru,->] (\tikzinputsegmentfirst) -- (\tikzinputsegmentlast) nod [de mai sus] {lineto};}, curveto cod={ \atrag [verde!75!negru,->] (\tikzinputsegmentfirst) .. controale (\tikzinputsegmentsupporta) și (\tikzinputsegmentsupportb) ..(\tikzinputsegmentlast) nod [de mai sus] {curveto};}, closepath cod={ \atrag [portocaliu,->] (\tikzinputsegmentfirst) -- (\tikzinputsegmentlast) nod [de mai sus] {closepath};} }]

\atrag [linii] grilă (3,2); \cale [decora] (0,0) -- (3,1) arc (0:180:1.5 și 1) -- ciclu; \end{tikzpicture} \end{document} ``

Arbitrare marcaje

Accesat de \usetikzlibrary{decoratiuni.marcaje} Descriere [din TikZ manual] Un marcaj poate fi considerat un "micul imagine" sau mai precis de "unele aplicare conținutul", care este plasat "pe" o cale de la o anumită poziție Exemplu

\documentclass[tikz,margin=1]{standalone}
\usetikzlibrary{decorations.markings}
\begin{document}
\colorlet{darkgreen}{green!70!black}
\begin{tikzpicture}[>=stealth]
\path (0,1) node[right,inner sep=0pt,font=\ttfamily] {markings};
\draw[postaction=decorate,decoration={
        markings,
        mark=at position 0.5 with \arrow{>}
      }] (0,0) -- (3,0) node[right=1ex] {One marking only};
\draw[postaction=decorate,decoration={
        markings,
        mark=at position 1/3 with {
          \draw[red,thick] (-2pt,-2pt) -- (2pt,2pt);
          \draw[red,thick] (-2pt,2pt) -- (2pt,-2pt);
        },
        mark=at position 2/3 with {
          \draw[darkgreen,thick] (-2pt,0) -- (0,-2pt) -- (2pt,2pt);
        }
      }] (0,-1) -- (3,-1) node[right=1ex] {Two markings};
\draw[postaction=decorate,decoration={
        markings,
        mark=between positions 0 and 1 step 0.2 with {
          \filldraw[fill=yellow] 
            (-3pt,-3pt) -- (3pt,-3pt) -- (0,3pt) -- cycle;
          \draw (0,2pt) -- (0,-1pt);
          \fill (0,-2pt) circle (.5pt);
        }
      }] (0,-2) to[bend left] (3,-2) node[right=1ex] {Several markings};
\end{tikzpicture}
\end{document}

Urme marcaje

Accesat de \usetikzlibrary{decoratiuni.urme} Descriere [din TikZ manual] Decoratiuni de această bibliotecă poate fi folosit pentru a decora un drum cu mici urme de pași, ca și cum cineva a avut "a intrat" de-a lungul calea. Exemplu

\documentclass[tikz,margin=1]{standalone}
\usetikzlibrary{decorations.footprints}
\begin{document}
\begin{tikzpicture}[y=-1.5cm,x=3cm]
\path (0,0) node[right,inner sep=0pt,font=\ttfamily] {footprints};
\foreach \i [count=\j] in {gnome,human,bird,felis silvestris} {
    \tikzset{decoration={footprints,foot of=\i}}
    \draw[thin,red] (0,\j) to[bend left] (1,\j);
    \draw[decorate] (0,\j) to[bend left] (1,\j) node[right] {\i};
}
\end{tikzpicture}
\end{document}

Forma de fundal marcaje

Accesat de \usetikzlibrary{decoratiuni.forme} Descriere [din TikZ manual] N/A Exemplu

\documentclass[tikz,margin=1]{standalone}
\usetikzlibrary{decorations.shapes}
\def\y{0}
\newcommand\decorated[1]{
    \tikzset{decoration=#1}
    \draw[thin,red] (0,\y) to[bend left] (1,\y);
    \draw[decorate] (0,\y) to[bend left] (1,\y)
        node[right,font=\ttfamily] {#1};
    \let\auxy\y
    \pgfmathsetmacro\y{\auxy+1}
}
\begin{document}
\begin{tikzpicture}[y=-1cm,x=3cm]
\decorated{crosses}
\decorated{triangles}
\decorated{shape backgrounds} % You can customize it. See more in the manual
\end{tikzpicture}
\end{document}

Text decoratiuni

Accesat de \usetikzlibrary{decoratiuni.text} Descriere [din TikZ manual] Decor în această bibliotecă decoreaza calea cu un text. Acest lucru poate fi folosit pentru a desena text care urmează o curbă. Exemplu

\documentclass[tikz,margin=2]{standalone}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}[y=-1cm,x=3cm]
\draw[postaction=decorate,decoration=text along path,
      /pgf/decoration/text={Hello world}] 
    (0,0) to[bend left] (1,0) node[right=1ex,font=\ttfamily] {text along path};
% Source: The TikZ - PGF manual, version 3.1.3, 9 May 2019, page 652
\tikzset{
    decoration={
        text effects along path,
        text={Hello world}, 
        text align=center,
        text effects/.cd,
            character count=\i,
            characters={xslant=0.5, text along path, name=c-\i}
    }
}
\draw[postaction=decorate] (0,1) -- (1,3.5) 
    node[right=1ex,font=\ttfamily] {text effects along path};
\end{tikzpicture}
\end{document}

Fractal decoratiuni

Accesat de \usetikzlibrary{decoratiuni.fractalii} Descriere [din TikZ manual] Decoratiuni de această bibliotecă poate fi folosit pentru a crea fractal linii. Exemplu

\documentclass[tikz,margin=1]{standalone}
\usetikzlibrary{decorations.fractals}
\def\y{0}
\newcommand\decorated[3][]{
    \tikzset{decoration=#2}
    \draw[ultra thin,red] (0,\y) -- (1,\y);
    \draw[#1] decorate {
                decorate { 
                  decorate { 
                    (0,\y) -- (1,\y)
                  }
                }
              };
    \path (1,\y) node[right=1ex,font=\ttfamily] {#2};
    \let\auxy\y
    \pgfmathsetmacro\y{\auxy+#3}
}
\begin{document}
\begin{tikzpicture}[y=-1cm,x=3cm]
\decorated{Koch curve type 1}{1.5}
\decorated{Koch curve type 2}{2}
\decorated{Koch snowflake}{1}
\decorated[ultra thick]{Cantor set}{0}
\end{tikzpicture}
\end{document}

Comentarii (0)