Quantcast
Channel: Fragen markiert mit mit tikz
Viewing all 383 articles
Browse latest View live

TikZ: Text in node platzieren

$
0
0

alt text

Was ist eigentlich die Methode, einen Anker für den Text in einer node festzulegen? Z.B. oben links (unten rechts). Und zwar so, dass die node in Maßen und Position die selbe bleibt.

Öffne in Overleaf
\documentclass[margin=5mm, tikz]{standalone}\usepackage{tikz}%\usetikzliubrary{decorations}\begin{document}\begin{tikzpicture}\node[draw,
minimum width=2cm,
minimum height=3cm,
align=left, 
] {AA};

\fill[red]  circle(1pt);
\end{tikzpicture}\end{document}

TikZ calendar: Datumszahlen exakt platzieren

$
0
0

Es geht um das Zusammenwürfeln der Fragen:

https://texwelt.de/wissen/fragen/22435/tikz-calendar-wie-kalender-seitengro-setzen

und

https://texwelt.de/wissen/fragen/22452/tikz-text-in-node-platzieren

__

Ich möchte, dass die Zahlen exakt oben links oder exakt unten rechts in den Rechtecken stehen.

Mit der Einstellung

Öffne in Overleaf
text width=(\textwidth-\pgflinewidth)/5-1pt, 
text depth=(\textheight-\pgflinewidth)/7-1pt,
  day xshift=(\textwidth-\pgflinewidth)/7,
  day yshift=(\textheight-\pgflinewidth)/5,

kommt es nahezu hin, allerdings erzeugt es unschöne Zusatzlinien.

alt text

Was muss ich anders machen?

Öffne in Overleaf
\documentclass[landscape]{scrartcl}\usepackage[margin=1.75cm,showframe=true]{geometry}\pagestyle{empty}\usepackage{tikz}\usetikzlibrary{calendar}%\usetikzlibrary{decorations}%\usetikzlibrary{shapes.multipart}\begin{document}\centering\begin{tikzpicture}[
every day/.append style={
font=\Large\bfseries,
align=flush left,
%    anchor=south east,
    draw,
    minimum width=(\textwidth-\pgflinewidth)/7 , %<-geändert
    minimum height=(\textheight-\pgflinewidth)/5,%<-geändert}
]
\calendar
[
text width=(\textwidth-\pgflinewidth)/5-1pt, 
text depth=(\textheight-\pgflinewidth)/7-1pt,
  day xshift=(\textwidth-\pgflinewidth)/7,% <- eingefügt
  day yshift=(\textheight-\pgflinewidth)/5,% <- eingefügt
  dates=2018-08-01 to 2018-08-31,
  week list,
%  day text=red
]
if (Sunday) [red]
if=(equals=08-10) [rectangle, draw, blue]
;
\end{tikzpicture}\end{document}

File - Tree Darstellung in einer Tabelle

$
0
0

Wie kann ich eine FILE Struktur in einer Tabelle darstellen/anzeigen. Anbei ein Code (Netzfund) den ich teilweise adaptiert habe. Dieser Code zeigt eine File Tree Struktur. Jetzt zu meiner Frage kann ich diese Struktur in meiner Tabelle (siehe unten) anzeigen lassen? Zb: in der Spalte 1?

Vollständiges Minimalbeispiel:

Öffne in Overleaf
\documentclass{minimal}\usepackage{tikz}\usetikzlibrary{trees}\begin{document}\tikzstyle{every node}=[draw=black,thick,anchor=west]
\tikzstyle{selected}=[draw=red,fill=red!30]
\tikzstyle{optional}=[dashed,fill=gray!50]
\begin{tikzpicture}[%
  grow via three points={one child at (0.5,-0.7) and
  two children at (0.5,-0.7) and (0.5,-1.4)},
  edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
  \node{texmf}
    child { node {S1*1}}        
    child { node {S2*3}}
    child { node {S2*3}}
    child { node [selected] {S*ALL}
      child { node [optional] {latex}}
      child { node {plain}}}
    child [missing] {}              
    child [missing] {}              
    child [missing] {}              
    child { node {S END}};
\end{tikzpicture}\end{document}

Anbei meine Tabelle (kein Standalone Code - sorry)

Öffne in Overleaf
\begin{longtable}{@{\extracolsep{\fill}}|C{3.2cm}|L{4.5cm}|L{8cm}|}\caption{}\\\hline\textbf{a}&\textbf{a a a}&\textbf{a a a}\\\hline\addlinespace[1pt]\hline\endfirsthead\multicolumn{3}{c}{(a of a)}\\\hline\textbf{a a}&\textbf{a a a}&\textbf{a a a}\\\hline\addlinespace[1pt]\hline\endhead\multicolumn{3}{c}{(To be continued)}\endfoot\endlastfoot
01a & 01\_gws (a) &\\\hline
02a & 02\_aws (a) &\\\hline
aa & 14a  &\\\cline{2-3}& v &\\\hline
... &... & ...\\\hline\end{longtable}

Fläche unter Funktionskurve,die rechts und links geöffnet ist, in einem bestimmten Abschnitt füllen

$
0
0

Hallo!

Ich bin noch relativ neu mit Latex und besonders mit pgfplots unterwegs und habe hier ein kleines Problem, für das ich bei anderen,ähnlichen Fragen noch keine Lösung gefunden habe.

alt text

Öffne in Overleaf
\documentclass{standalone}\usepackage{pgfplots}\usepgfplotslibrary{fillbetween}\pgfplotsset{compat=1.10}\usepackage{tikz}\begin{document}\begin{tikzpicture}\begin{axis}[axis lines=middle,xlabel=$x$,ylabel=$y$,
    xtick=\empty,ytick=\empty,enlargelimits=0.05,grid,domain=-2:2,no marks]

\addplot[name path=P,green]{3^x};

\draw[blue,very thin](250,800)node[above]{$a$}--(250,-10);
\draw[blue,very thin](350,800)node[above]{$b$}--(350,-10);

\end{axis}\end{tikzpicture}\end{document}

Ich habe mir diesen Abschnitt kurz aus meinem Dokument rausgeholt, um es kurz zu halten. Die Achsenbeschriftung ist mir in diesem Fall vollkommen egal.

Jedenfalls frage ich mich, wie man das mit pgfplots macht, dass unter der Kurve (y=3^x) die Fläche im Bereich zwischen a und b gefüllt wird.

Eine kleine technische Frage habe ich auch noch. Ich habe hier ein Koordinatensystem, in dem die Maße nicht ganz so passend sind. Die y-Achse im Bild ist im Code erst bei x=200 oder so. Wie kann man das noch einstellen, dass die y-Achse auch im Code bei x=0 ist?

Vielen Dank für die Hilfe!

LG Lilanarus

Wie erstelle ich ein Schaltsymbol für ein Messgerät mit TikZ?

$
0
0

Für Messgeräte in elektrischen Stromkreisen sind unterschiedliche Schaltsymbole gebräuchlich. Eine Variante zeigt einen Pfeil innerhalb eines Kreises, wobei rechts unterhalb des Kreises die gemessene Größe (typischerweise I oder U) angegeben wird.

Ich habe folgende Lösung gefunden, diese Variante mit TikZ umzusetzen:

Öffne in Overleaf
\documentclass{article}\usepackage{tikz}\usetikzlibrary{circuits.ee.IEC}% Pfeil als Annotation für das Schaltsymbol:\tikzset{circuit declare annotation={Pfeil}{}{[shift=(\tikzlastnode.center)](0.6\tikzcircuitssizeunit,-0.6\tikzcircuitssizeunit) edge[line to] (-0.6\tikzcircuitssizeunit,0.6\tikzcircuitssizeunit)}}% Schaltzeichen für das Amperemeter:\tikzset{circuit declare symbol=Amperemeter,set Amperemeter graphic={draw,generic circle IEC, minimum size=5mm,info=-45:{\scriptsize$I$}}}% Schaltzeichen für das Voltmeter:\tikzset{circuit declare symbol=Voltmeter,set Voltmeter graphic={draw,generic circle IEC, minimum size=5mm,info=-45:{\scriptsize$U$}}}\begin{document}\begin{tikzpicture}[circuit ee IEC]
\node (SQ) [battery] at (0,0) {};
\node (L) [bulb] at (0,2) {};
\node (K1) [contact] at (-0.8,2) {};
\node (K2) [contact] at (0.8,2) {};
\node (V) [Voltmeter=Pfeil] at (0,3) {};
\node (A) [Amperemeter=Pfeil] at (-1.5,1) {};
\draw (SQ) -- (1.5,0) |- (L) -| (A) |- (SQ);
\draw (K1) |- (V) -| (K2);
\end{tikzpicture}\end{document}

Die Lösung hat folgende Probleme:

  1. Bei jedem Vorkommen eines Messgeräts muss die Annotation Pfeil ausdrücklich aufgerufen werden. Da es das Symbol nur mit dem Pfeil gibt, sollte dieser ohne besondere Anforderung gezeichnet werden.
  2. Für die Beschriftung des Schaltzeichens bin ich auf I oder U festgelegt. Besser wäre ein Argument, mit dem man auch Dinge wie I_2 oder U_{34} angeben könnte.

Wie kann man das besser lösen?

Was ist der Unterschied zwischen TikZ und PGF?

$
0
0

Auf dem Deckblatt der Dokumentation von Till Tantau steht unter anderem sowas wie Tikz & PGF. Das suggeriert, dass Tikz und PGF unterschiedliche Dinge sind. Deswegen würde ich gerne wissen, worin sich beide Dinge unterscheiden. Was haben sie gemeinsam? Wann sollte was verwendet werden? Was ist mächtiger?

Usepackage Forest - Wie kann ich nodes in den Rechtecken erzeugen?

$
0
0

Mein Code:

Öffne in Overleaf
\documentclass[11pt,a4paper,titlepage,bibliography=totoc,numbers=noenddot,abstract=on,multi,dvipsnames,svgnames,x11names]{scrreprt}\usepackage{forest}\definecolor{folderbg}{RGB}{124,166,198}\definecolor{folderborder}{RGB}{110,144,169}\def\Size{5pt}\tikzset{
  folder/.pic={\filldraw[draw=folderborder,top color=folderbg!0,bottom color=white]
      (-3*\Size,-\Size) rectangle (3*\Size,\Size);

  }}\begin{document}\begin{forest}
  for tree={
    font=\ttfamily,
    grow'=0,
    child anchor=west,
    parent anchor=south,
    anchor=west,
    calign=first,
    inner xsep=20pt,
    edge path={\noexpand\path [draw, \forestoption{edge}]
      (!u.south west) +(4pt,0) |- (.child anchor) pic {folder}\forestoption{edge label};
    },
    before typesetting nodes={
      if n=1
        {insert before={[,phantom]}}{}},
    fit=band,
    before computing xy={l=60pt},
  }  
[system
  [config
  ]
  [lib
    [Access
    ]
    [Plugin
    ]
  ]
  [templates
  ]
  [tests
  ]
[tests
]
[tests
]
[tests
]
[tests
]
[tests
]
]
\end{forest}\end{document}

Meine Frage: Wenn ich jetzt mehrere "Zeilen" (tests) hinzufüge wird kein Seitenumbruch erzeugt. Keine 2te Seite mit den Einträgen wird erzeugt.Warum?

Wie kann ich verschiedene Strings (Text) in die Rechtecke schreiben. Siehe Bild. alt text

TikZ (shapes [isosceles triangle], matrix): Wie Matrizellen horizontal / vertikal zentrieren?

$
0
0

alt text

Was muss ich tun, damit die Matrizellen horizontal / vertikal zentriert werden?

Öffne in Overleaf
\documentclass[margin=5mm, tikz]{standalone}\usepackage{tikz}\usetikzlibrary{matrix}\usetikzlibrary{shapes.geometric}\begin{document}\begin{tikzpicture}[align=center, 
thick, 
%
gsDreieck/.style={
shape=isosceles triangle, isosceles triangle stretches,
draw, rotate=90,
minimum width=0.75cm, minimum height=1.5cm, 
% outer sep=0pt,        inner sep=0pt,        %anchor=west, },
Kreis/.style={circle, draw, minimum width=5mm,},
%
matrixstyle/.style={
matrix of nodes,
nodes in empty cells,
column sep=2em, row sep=1em, 
align=center, %anchor=west,},
%shape border uses incircle
]

\newcommand{\gsd}[1]{%\node [gsDreieck, below] (gsD) {};
\node[below=3mm] at (gsD) {#1};%}\newcommand{\kr}{\node[Kreis]{};}\matrix (m)[matrixstyle]
{
Langer Text &\kr&&\\\gsd{A}&\gsd{A}&\dots&\gsd{D}\\
1 & 2   & 3   & 4 \\};
\end{tikzpicture}\end{document}

File Tree: Wie kann ich einen weiteren String auf der Verbindungslinie setzen?

$
0
0

Mit der Hilfe eines Users von texwelt.de konnte ich einen Zeilenumbruch in der tikz Umgebung realisieren. Danke! (Siehe Code)

Nun zu meiner abschließenden Frage zu dem Thema Filetree/usepackage Forest... Wie kann ich dieses Mal einen weiteren unabhängigen Node in der "gleichen Zeile" direkt auf der Verbindungslinie setzen? Der weitere Node (im Bild mit roter Schriftfarbe) besteht aus mehreren Zeichen somit müsste die Horizontale Linie auch in die Länge gezogen werden.

mein Code:

Öffne in Overleaf
\documentclass[11pt,a4paper,titlepage,bibliography=totoc,numbers=noenddot,abstract=on,multi,dvipsnames,svgnames,x11names]{scrreprt}\usepackage{storebox}\usepackage[edges]{forest}\usepackage{adjustbox}%Zeilenumbruch in der tikz Umgebung!% addaswyd o gôd Sašo Živanović: http://tex.stackexchange.com/a/296771/\def\hiddenparcommand{\par}\newcommand\otherhiddenparcommand{\par\noindent}\newcommand\hiddencommacommand{, }\forestset{%
    declare keylist register={split here ids},% the list of nodes to split the tree at
    split here ids={},
    declare keylist register={split here interjects},% the list of comments to put in between the tree parts
    split here interjects={},
    declare keylist={split here auto siblings}{},% a list to hold the siblings which need edge restoration
    declare toks register=split here toks,
    declare dimen register=tmpdima,
    tmpdima'=0pt,
    declare dimen register=tmpdimb,
    tmpdimb'=0pt,
    declare dimen register=tmpdimc,
    tmpdimc'=0pt,
    to widest/.style={
        tikz+={\path (\forestregister{tempdima}, \forestoption{y}) -- (\forestregister{tempdimb}, \forestoption{y});},
    },
    hide commas/.style={%
        split here toks+={\hiddencommacommand},
        split here toks+={#1},
    },
    split dir tree pre/.style={%
        label={[text=gray, anchor=north, font=\scriptsize]below:{[cont.]}{}},
    },
    split dir tree post/.style={%
        label={[font=\scriptsize, anchor=south, text=gray]above:{[cont.]}{}},
    },
    split dir tree auto post/.style={% this gets applied to the first node after a break
        split dir tree post,
        tempkeylistc'={},
        tmpdimb/.option=y,
        for nodewalk={
            while={> ORw2+d _+d < On=! &{y}{tmpdimb}{##2-##1}{\textheight-#1}{n'}{1}%}{
                next,
                tempkeylistc/.option=name
            }%}{},
        % save the list
        split here auto siblings/.register=tempkeylistc,
        tikz+/.process={% this tries to redraw the edges to the following siblings
            OOw2{edge}{id}%{%\path [##1] (!u.parent anchor |- .north) ++(\forestregister{folder indent},1ex) coordinate (before ##2) |- (.child anchor);
                \edef\tempa{\foresteoption{split here auto siblings}}\foreach\i in \tempa\path [##1] (before ##2) |- ({forest cs:\i.child anchor});
            }%},
    },
    split dir tree/.code={%\forestset{%
            draw tree stage/.style={
                for root'={
                    tempdima/.min={%>OOw2+d{x}{min x}{####1+####2}%}{tree},
                    tempdimb/.max={%>OOw2+d{x}{max x}{####1+####2}%}{tree},
                    for tree={%
                        to widest,
                    },
                },
                tempcountb'=-1,
                do until={%
                    strequal((split_here_ids),"")
                }{%
                    tempkeylistb'={},
                    tempkeylista'={},
                    split register={split here ids}{,}{tempcounta,tempkeylistb+},
                    split register={split here interjects}{,}{temptoksa,tempkeylista+},
                    split here ids'/.register=tempkeylistb,
                    split here interjects'/.register=tempkeylista,
                    % Sašo Živanović: http://chat.stackexchange.com/transcript/message/28484520#28484520
                    for nodewalk={%
                        draw tree processing order/.style={%
                            filter={tree}{> ORw+n< OR> &{id}{tempcounta}{########1+1}{id}{tempcountb}}%}%}{},
                    for root'={draw tree},
                    TeX/.process={Rw{temptoksa}{\otherhiddenparcommand ####1\hiddenparcommand}},
                    tempcountb'/.register=tempcounta,
                },
                for nodewalk={%
                    draw tree processing order/.style={%
                        filter={tree}{>OR>{id}{tempcountb}}%}%}{},
                for root'={draw tree},
            },
        }%},
    split dir here auto/.style n args=2{%
        split dir tree pre,
        !next node.split dir tree auto post=#2,
        split here ids+/.option=id,
        %     !next node.split resume here ids+/.option=id,
        split={#1}{,}{split here toks,hide commas},
        split here interjects/.register=split here toks,
    },
    split dir tree auto/.style={%
        split dir tree,
        before drawing tree={%
            tempdima/.max={y}{tree},
            tempdimc/.register=tempdima,
            tempdimd/.min={y}{tree},
            tempdima-/.register=tempdimd,
            tempdimb'=\textheight,
            tmpdima'=10ex,
            tmpdimc'=\pagetotal,
            while={%>RR>{tempdima}{tempdimb}%}{%
                for nodewalk={%
                    root',
                    until={%> ROw2+d RRw2+d > {tempdimc}{y}{##1-##2}{tmpdima}{tmpdimc}{\textheight-##2-##1}%}{next node},
                    previous node,
                    split dir here auto/.process={R_w2{tmpdima}{continued}{{##2}{##1}}},
                    next node,
                    tempdima/.option=y,
                    tempdimc/.register=tempdima,
                    tempdima-/.register=tempdimd,
                    tmpdima'=15ex,
                    tmpdimc'=0pt
                }{},
            },
        },
    },
}%Zeilenumbruch in der tikz Umgebung! Ende\begin{document}\begin{forest}
    for tree={
        folder,
        grow'=0,
        fit=band,
    },
    split dir tree auto,
    [ XYZ
    [ XYZ
    [ XYZ
    [ XYZ
    [ XYZ ]
    ]
    ]
    [ XYZ
    [ XYZ
    [ XYZ ]
    ]
    ]
    [ XYZ
    [ XYZ
    [ XYZ ]
    [ XYZ ]
    [ XYZ ]
    [ XYZ ]
    [ XYZ ]
    [ XYZ ]
    [ XYZ ]
    ]
    [ XYZ
    [ XYZ ]
    [ XYZ ]
    [ XYZ ]
    [ XYZ ]
    [ XYZ ]
    ]
    [ XYZ
    [ XYZ ]
    ]
    [ XYZ
    [ XYZ ]
    [ XYZ ]
    ]
    ]
    [ XYZ
    [ XYZ
    [ XYZ ]
    [ XYZ ]
    ]
    ]
    [ XYZ
    [ XYZ
    [ XYZ ]
    [ XYZ ]
    [ XYZ ]
    [ XYZ ]
    ]
    ]
    ]
    ]
\end{forest}\end{document}

Danke. alt text

Was sind bekannte Probleme bei TikZ?

$
0
0

TikZ und pgf sind zusammen ein supertolles Grafikpaket, damit auch recht groß und komplex. Da kann es auch schonmal Abhängigkeiten, Inkompatibilitäten, Bugs oder Probleme geben, auch wenn Pakete oder Klassen darauf basieren.

Was ist denn bekannt, so dass man als TikZ-Nutzer wie ich darauf acht geben kann, und welche Lösungsmöglichkeiten oder Workarounds gibt es jeweils?

Pagebreak mit Einschränkungen

$
0
0

Hallo,

Was kann mein Code? Mein Code erzeugt einen Pagebreak in einer Tikz Umgebung. Diesen Programm Code habe ich von Sašo Živanović: http://tex.stackexchange.com/a/296771/übernommen. Danke an dieser Stelle. So weit so gut.

Was für welche Einschränkungen hat dieser Code: Leider funktioniert mein Code (Page Break + File Tree) nur dann wenn der File Tree länger als 1 Seite ist. Dh: Erst dann wenn ein Pagebreak möglich ist. Ist der File Tree kürzer als 1 Seite bekomme ich eine Fehlermeldung -> Paragraph ended before \forestOeappto was complete. \end{forest} usw. Damit es trotzdem funktioniert muss ich folgende Zeile auskommentieren -> split dir tree auto,

Wir verwenden Latex als Bericht Automatisierung. Wir wissen nie wie lange der File Tree ist. Somit suchen wir einen Code der beide Fälle gleichzeitig abdeckt ohne manuell eingreifen zu müssen und den Code umzuschreiben wenn der Filetree zu kurz ist. Ich hoffe es gibt dafür eine Lösung. Ich bin zwar Programmierer (c#) aber mit Latex tue ich mir sehr schwer Fuß zu fassen. Sorry für die Unannehmlichkeiten und nochmals Danke.

Der Code ist wirklich so lange .... ich kann ihn nicht kürzen. Der Code besteht aus 2 Teile. 1 Teil ist für den Pagebreak verantwortlich der 2 Teil für den File Tree. In meinem Beispiel habe ich den File Tree sehr kurz gehalten um die Fehlermeldung zu provozieren (wenn split file tree) einkommentiert ist. Wird der File Tree erweitert bekomme ich wenn ich split dir tree auto einkommentiere keine Fehlermeldung. UPDATE1 Kann ich split dir tree auto, diese Programzeile mit einer If Abfrage ein oder ausschalten bzw. ausführen oder nicht ausführen?

Öffne in Overleaf
\documentclass[11pt,a4paper,titlepage,bibliography=totoc,numbers=noenddot,abstract=on,multi,dvipsnames,svgnames,x11names]{scrreprt}\usepackage{storebox}\usepackage[edges]{forest}\usepackage{adjustbox}%Zeilenumbruch in der tikz Umgebung!% addaswyd o gôd Sašo Živanović: http://tex.stackexchange.com/a/296771/\def\hiddenparcommand{\par}\newcommand\otherhiddenparcommand{\par\noindent}\newcommand\hiddencommacommand{, }\forestset{%
    declare keylist register={split here ids},% the list of nodes to split the tree at
    split here ids={},
    declare keylist register={split here interjects},% the list of comments to put in between the tree parts
    split here interjects={},
    declare keylist={split here auto siblings}{},% a list to hold the siblings which need edge restoration
    declare toks register=split here toks,
    declare dimen register=tmpdima,
    tmpdima'=0pt,
    declare dimen register=tmpdimb,
    tmpdimb'=0pt,
    declare dimen register=tmpdimc,
    tmpdimc'=0pt,
    to widest/.style={
        tikz+={\path (\forestregister{tempdima}, \forestoption{y}) -- (\forestregister{tempdimb}, \forestoption{y});},
    },
    hide commas/.style={%
        split here toks+={\hiddencommacommand},
        split here toks+={#1},
    },
    split dir tree pre/.style={%
        label={[text=gray, anchor=north, font=\scriptsize]below:{[cont.]}{}},
    },
    split dir tree post/.style={%
        label={[font=\scriptsize, anchor=south, text=gray]above:{[cont.]}{}},
    },
    split dir tree auto post/.style={% this gets applied to the first node after a break
        split dir tree post,
        tempkeylistc'={},
        tmpdimb/.option=y,
        for nodewalk={
            while={> ORw2+d _+d < On=! &{y}{tmpdimb}{##2-##1}{\textheight-#1}{n'}{1}%}{
                next,
                tempkeylistc/.option=name
            }%}{},
        % save the list
        split here auto siblings/.register=tempkeylistc,
        tikz+/.process={% this tries to redraw the edges to the following siblings
            OOw2{edge}{id}%{%\path [##1] (!u.parent anchor |- .north) ++(\forestregister{folder indent},1ex) coordinate (before ##2) |- (.child anchor);
                \edef\tempa{\foresteoption{split here auto siblings}}\foreach\i in \tempa\path [##1] (before ##2) |- ({forest cs:\i.child anchor});
            }%},
    },
    split dir tree/.code={%\forestset{%
            draw tree stage/.style={
                for root'={
                    tempdima/.min={%>OOw2+d{x}{min x}{####1+####2}%}{tree},
                    tempdimb/.max={%>OOw2+d{x}{max x}{####1+####2}%}{tree},
                    for tree={%
                        to widest,
                    },
                },
                tempcountb'=-1,
                do until={%
                    strequal((split_here_ids),"")
                }{%
                    tempkeylistb'={},
                    tempkeylista'={},
                    split register={split here ids}{,}{tempcounta,tempkeylistb+},
                    split register={split here interjects}{,}{temptoksa,tempkeylista+},
                    split here ids'/.register=tempkeylistb,
                    split here interjects'/.register=tempkeylista,
                    % Sašo Živanović: http://chat.stackexchange.com/transcript/message/28484520#28484520
                    for nodewalk={%
                        draw tree processing order/.style={%
                            filter={tree}{> ORw+n< OR> &{id}{tempcounta}{########1+1}{id}{tempcountb}}%}%}{},
                    for root'={draw tree},
                    TeX/.process={Rw{temptoksa}{\otherhiddenparcommand ####1\hiddenparcommand}},
                    tempcountb'/.register=tempcounta,
                },
                for nodewalk={%
                    draw tree processing order/.style={%
                        filter={tree}{>OR>{id}{tempcountb}}%}%}{},
                for root'={draw tree},
            },
        }%},
    split dir here auto/.style n args=2{%
        split dir tree pre,
        !next node.split dir tree auto post=#2,
        split here ids+/.option=id,
        %     !next node.split resume here ids+/.option=id,
        split={#1}{,}{split here toks,hide commas},
        split here interjects/.register=split here toks,
    },
    split dir tree auto/.style={%
        split dir tree,
        before drawing tree={%
            tempdima/.max={y}{tree},
            tempdimc/.register=tempdima,
            tempdimd/.min={y}{tree},
            tempdima-/.register=tempdimd,
            tempdimb'=\textheight,
            tmpdima'=10ex,
            tmpdimc'=\pagetotal,
            while={%>RR>{tempdima}{tempdimb}%}{%
                for nodewalk={%
                    root',
                    until={%> ROw2+d RRw2+d > {tempdimc}{y}{##1-##2}{tmpdima}{tmpdimc}{\textheight-##2-##1}%}{next node},
                    previous node,
                    split dir here auto/.process={R_w2{tmpdima}{continued}{{##2}{##1}}},
                    next node,
                    tempdima/.option=y,
                    tempdimc/.register=tempdima,
                    tempdima-/.register=tempdimd,
                    tmpdima'=15ex,
                    tmpdimc'=0pt
                }{},
            },
        },
    },
}%Zeilenumbruch in der tikz Umgebung! Ende\begin{document}\begin{forest}
    for tree={
        folder,
        grow'=0,
        fit=band,
    },
    %split dir tree auto, ->Auskommetiert damit es funktioniert
    [ XYZ
    [ XYZ
    [ XYZ,edge label={node[pos=0.75,above,font=\scriptsize]{1}}
     [ XYZ,edge label={node[pos=0.75,above,font=\scriptsize]{1}}
    ]
    ]
    ]
    ]
\end{forest}\end{document}

Wie kann ich zufällig generierte Zahlen in der tikzpicture- Umgebung verwenden?

$
0
0

Hallo zusammen.

Ich habe vor eine kleine Animation zu erstellen, die was mit dem Zufallsprinzip zu tun hat und ich möchte erstmal einen Frame produzieren, der mir zehn Linien aus dem Punkt (0|0) zu dem Punkt (1|x) zeichnet, wobei x hier eine zufällige Zahl zwischen -10 und 10 sein soll. Hier ist mal mein Code.

Öffne in Overleaf
\documentclass[border=10pt]{standalone}\usepackage{tikz}\usepackage{amsmath}\usepackage{amsfonts}\usepackage{amssymb}\usepackage[first=-10, last=10]{lcg}\begin{document}\newcommand{\random}{\rand\arabic{rand}}\begin{tikzpicture}\draw[fill=white](-1,-11) rectangle (4,11);

\draw[-latex,thick,black](0,0) -- (2,0);

\draw[red,thin](0,0) -- (1,\random);

\end{tikzpicture}\end{document}

Nun bekomme ich die Fehlermeldung

"TeX Capacity exceeded,sorry[Input stack size=5000].value#1->csnamec[at]#1endcsnamedraw[red,thin](0,0) -- (1,random);"

Wie es aussieht, kann Latex diese zufällige Zahl nicht in einer tikzpicture-Umgebung als Variable verarbeiten. Ich habe mir auch schon die Dokumentation für das lcg- Package durchgelesen, aber das ist mir als ein Schüler und Nicht- Programmierer etwas zu hoch. Und allzu viel Erfahrung mit der Auswertung dieser Fehlermeldungen habe ich auch nicht.

Kann mir da jemand vielleicht weiter helfen? Ich bedanke mich für jede Antwort!

Viele Grüße

TikZ / pgfplotstable: Node in pgfplotstable - wie erreiche ich gleiche baseline?

$
0
0

alt text

Wenn ich eine Tikz-Node in eine pgfplotstable setze, wird diese natürlich nicht an den restlichen Inhalt angepasst. Wie könnte ich das erreichen?

MWE:

alt text

Öffne in Overleaf
\documentclass[margin=5mm, varwidth]{standalone}\usepackage{pgfplotstable, amsmath}\pgfplotsset{compat=1.13}\pgfplotstableset{header=false,
every head row/.style={output empty row}, 
string type,
}\begin{document}\pgfplotstabletypeset[]{
1       {\tikz[red, baseline=0em]{\node[]{node};}}   
3       4
}\end{document}

Wie verhindere ich, dass sich die Pfeile meines TikZ-Flowcharts verschieben, wenn ich meine Nodes mit Text befülle?

$
0
0

Hallo zusammen,

ich versuche gerade mit TikZ Flowcharts für meine Lern-Zusammenfassung zu erstellen. Nun habe ich das folgende Problem:

Solange ich in den einzelnen nodes meines Flowcharts nur Platzhalter in Form von Zahlen habe funktioniert alles wunderbar. Ersetze ich aber die Platzhalter durch den eigentlichen Text, verschieben sich die paths des Flowcharts und laufen direkt oben an den nodes entlang.

Kann mir jemand sagen was ich falsch gemacht habe und wie ich das Problem lösen kann?

Ohne den Text funktioniert das Ganze:

Öffne in Overleaf
\documentclass{scrbook}\usepackage[utf8]{inputenc}\usepackage[ngerman]{babel}\usepackage[T1]{fontenc}\usepackage{tikz}\usetikzlibrary{matrix,calc,shapes}\tikzset{
env/.style      = {shape=rectangle,
                 draw, anchor=north,
                 text width=7em, align=left,
                 inner sep=1ex},
}\begin{document}\begin{center}\begin{tikzpicture}[-latex]
\matrix (chart)
[
matrix of nodes,
column sep      = 1em,
row sep         = 1cm,
nodes = env,
]
{&& 3 &&\\
1 & 2 & 3 & 4 & 5\\};
\draw (chart-2-1) |- (0,0)-| (chart-1-3.south);
\draw (chart-2-2)  |- (0,0) -| (chart-1-3.south);
\draw (chart-2-3) |- (0,0) -|(chart-1-3.south);
\draw (chart-2-4) |- (0,0) -| (chart-1-3.south);
\draw (chart-2-5) |- (0,0) -| (chart-1-3.south);

\end{tikzpicture}\end{center}\end{document}

Hier das Ergebnis:

alt text

Mit dem Text funktioniert es dann nicht mehr:

Öffne in Overleaf
\documentclass{scrbook}\usepackage[utf8]{inputenc}\usepackage[ngerman]{babel}\usepackage[T1]{fontenc}\usepackage{tikz}\usetikzlibrary{matrix,calc,shapes}\tikzset{
env/.style      = {shape=rectangle,
                 draw, anchor=north,
                 text width=7em, align=left,
                 inner sep=1ex},
}\begin{document}\begin{center}\begin{tikzpicture}[-latex]
\matrix (chart)
[
matrix of nodes,
column sep      = 1em,
row sep         = 1cm,
nodes = env,
]
{&& 3 &&\\
Hier wird dann etwas stehen & Hier wird dann auch etwas stehen & Auch hier soll etwas stehen & Hier auch & Und sogar hier 
wird etwas stehen\\};
\draw (chart-2-1) |- (0,0)-| (chart-1-3.south);
\draw (chart-2-2)  |- (0,0) -| (chart-1-3.south);
\draw (chart-2-3) |- (0,0) -|(chart-1-3.south);
\draw (chart-2-4) |- (0,0) -| (chart-1-3.south);
\draw (chart-2-5) |- (0,0) -| (chart-1-3.south);

\end{tikzpicture}\end{center}\end{document}

Das ist das Ergebnis:

alt text

pgfplotstable / TikZ: Zeichnen mit TikZ in pgfplotstable

$
0
0

Wenn ich Koordinaten

\tikz[remember picture]{\coordinate[label=A] (A) at (0,0);}

und

\tikz[remember picture]{\coordinate[label=B] (B) at (0,0);}

in einer pgfplotstable platziere, wie kann ich dann darin zeichnen \tikz[overlay, red]{\draw(A) -- (B);}

So ohne Weiteres geht es nicht:

alt text

Öffne in Overleaf
\documentclass[margin=5mm, varwidth]{standalone}\usepackage{pgfplotstable, amsmath}\pgfplotsset{compat=1.13}\pgfplotstableset{header=false,
every head row/.style={output empty row}, 
string type,
}\def\tikzI{\tikz[remember picture]{\coordinate[label=A] (A) at (0,0);%\draw[red] (A) circle(1pt);%}}\def\tikzII{\tikz[remember picture]{\coordinate[label=below:B] (B) at (0,0);%\draw[red] (B) circle(1pt);%\draw[blue] (A) -- (B);% 1. Versuch}}\begin{document}\pgfplotstabletypeset[]{
a       \tikzI 
b        c
d        e  
f       \tikzII}\tikz[overlay, red]{\draw(A) -- (B);}% 2. Versuch\end{document}

Wie kann ich in tikz Daten aus einer externen Datei einbinden?

$
0
0

Hallo zusammen,

ich möchte gerne aus einer externen .txt oder .csv-Datei zeilenweise Punktkoordianten auslesen und mit Hilfe von tikz in Latex daraus eine Zeichnung erstellen für den Druck.

Die Datei hat folgendes Layout (Zahlenpaare stehen zeilenweise untereinander und sind durch ein ";" getrennt):

Öffne in Overleaf
0;0
4.267;0
2.626434203;-0.247438662
3.123622464;-0.270040693
3.638571116;-0.276587334
4.387588738;-0.309965296
4.597388432;-0.321883878
4.890808417;-0.106803221
5.349398135;-0.184094271
5.795033691;-0.301575063
6.253834907;-0.443782546

Hierbei soll der erste Wert jeweils die x-Koordinate und der zweite die y-Koordinate des Punktes darstellen.

Mein .tex-File sieht dann wie folgt aus:

Öffne in Overleaf
\documentclass[tikz,a4paper,margin=1mm]{standalone}\usetikzlibrary{intersections,angles,quotes,calc,through}\usepackage[ansinew]{inputenc}\begin{document}\begin{tikzpicture}\draw[fill,red](\x,\y)circle(.5pt);

\draw[red](\x,\y)circle(2.5pt);

\end{tikzpicture}\end{document}

Wie kann ich in LaTeX also die Datei zeilenweise auslesen und die Werte in die Variablen "x" und "y" schreiben und somit ein Bild mit allen Messpunkten erstellen?

Vielen Dank für eure Hilfe, Martin

TikZ (matrix): Wie beseitige ich die Lücken zwischen Spalten?

$
0
0

alt text

Was muss ich einstellen, dass die rot markierten Lücken in folgender Struktur verschwinden?

€dit:Das Beispiel ist schlecht. Ich hätte gerne vor den "step"-Spalten den eingestellten column sep=1cm, danach aber nicht; also als Bild wäre das:

alt text

xshift=-5mm hat mir dabei nicht geholfen.

Öffne in Overleaf
%\documentclass[]{article}\documentclass[border=3mm, tikz]{standalone}\usepackage{pgfplotstable, amsmath}\usepackage{tikz}\usetikzlibrary{matrix}\tikzset{nodes={text width=3.75cm, draw},% für Matrizen
GeradeSpalten/.style={%column sep=-2cm, 
row sep=5mm, 
%outer sep=0pt, inner sep=0pt, 
column #1/.style={nodes={%text depth=1cm, %align=right, 
text width=1.5em, draw}}% für step-Spalten}, 
GeradeSpalten/.list={2,4,...,100}, 
}\begin{document}\begin{tikzpicture}[]
\matrix[GeradeSpalten,
matrix of nodes, %nodes in empty cells, 
column sep=1cm, 
nodes={align=left, anchor=west, xshift=-0cm}, ampersand replacement=\&] (m) {{MatrixI}\&  step  \&{MatrixII}\& step    \\{MatrixIII}\&  step  \&{MatrixIV}\& step    \\{MatrixV}\&\&\&\\};

%\fill[red] (m-1-2.center) circle(1mm);\end{tikzpicture}\end{document}

pgfmath: Funktion gesucht, die Strings und Zahlen verarbeiten kann

$
0
0

Gibt es eigentlich von pgfmath (!) eine Funktion, mit etwa folgenden Eigenschaften:

alt text

Öffne in Overleaf
\documentclass[]{article}\usepackage{tikz}\usepackage{array}\begin{document}\def\myarray{{1,0,"-1","a"}}\foreach\i in {0,...,3}{\pgfmathparse{\myarray[\i]}$\pgfmathresult$~ }\pgfmathsetmacro\t{"1"}\pgfmathparse{"\t" > 0 ? "ja" : "\t"}$\pgfmathresult$\\\newcolumntype{B}{>{\bfseries}l  }\begin{tabular}{B l B  l }
in: &\verb+\foo{a}+  & out: &$a$ ist ein String  \\
in: &\verb+\foo{\frac32}+  & out: &$\frac32$ ist ein String  \\
in: &\verb+\foo{-1.2}+  & out: &$-1.2$ ist negativ  \\
in: &\verb+\foo{0}+  & out: &$0$ ist Null\\
in: &\verb+\foo{2}+  & out: &$2$ ist positiv  \\\end{tabular}\end{document}

Wie kann ich eine Graphik-Datei (png) in TikZ-Code übersetzen?

$
0
0

Das ist jetzt natürlich keine reine Code-Frage, aber es wurden ja auch schon Editoren u.a. thematisiert.

Welche Möglichkeiten gibt es, eine Graphikdatei, etwa *.png, in TikZ-Code zu übersetzen?

Mir geht es speziell um diese kleinen Bildchen (die es übrigens auch in groß gibt - klicke auf die Graphik):

alt text ------ alt text ------ alt text

Die möchte ich ungern von Hand nachzeichnen, aber dennoch lieber in TikZ-Form haben.

PS: Es wäre natürlich das Schönste, wenn es mal ein Paket für sowas gäbe (was vll. dann irgendwie auf ghostscript oder sowas zugreift), aber soviel Glück werden wir wohl nicht haben.

TikZ / calendar: Problem mit multirow in node

$
0
0

Ich möchte dieses Bild

alt text

erzeugen in einer TikZ calendar node; allerdings möglichst ohne besondere Splatenabstände.

In einer normalen node und im Kalender werden die Tabellen komisch verzehrt.

alt text

Was muss ich tun?

Öffne in Overleaf
\documentclass[landscape]{scrartcl}\usepackage[margin=1.75cm,showframe=false]{geometry}\pagestyle{empty}\usepackage{tikz}\usepackage{array, multirow}\usetikzlibrary{calendar}\pgfkeys{tikz/.cd,
         my inner sep/.store in =\myinnersep,
         my inner sep=5pt
}\def\CalendarNumbersFont{\Huge\sffamily}%\bfseries\begin{document}
SOLL:  \begin{tabular}{l l l }\multirow{1}{*}{\Huge 2}& a  &\multirow{1}{*}{\Huge M}\\{}& b &{}\end{tabular}\\[10cm]
IST:

% Schrifthöhe auslesen\CalendarNumbersFont\pgfmathsetmacro{\myheight}{height("1")}\typeout{\myheight}\newcommand\Tabelle{\begin{tabular}{l >{\footnotesize} l l}\multirow{1}{*}{\tikzdaytext}& a  &\multirow{1}{*}{\Huge M}\\{}& b &{}\end{tabular}}\centering\begin{tikzpicture}[
  every day/.append style={
    font=\CalendarNumbersFont,
    draw,
    inner sep=\myinnersep,
    text width=(\textwidth-\pgflinewidth)/7-2*\myinnersep,%
    text depth=(\textheight-\pgflinewidth)/5-\myheight-2*\myinnersep,%
    minimum width=(\textwidth-\pgflinewidth)/7 ,%
    minimum height=(\textheight-\pgflinewidth)/5,%},
]
\calendar (cal)
[
  day xshift=(\textwidth-\pgflinewidth)/7,% <- eingefügt
  day yshift=(\textheight-\pgflinewidth)/5,% <- eingefügt
  dates=2018-08-01 to 2018-08-last,
  week list, 
]
%if (Sunday) [nodes={red, fill=pink}]
if (equals=2018-08-02) [
nodes={red, fill=pink}, 
%day code={\node[every day]{ \Tabelle  };}
day code={\node[every day]{\tikzdaytext$\vphantom{\tikzdaytext}_{{\Huge b}}^{a}$};}
]
%
if (equals=2018-08-07) [
nodes={red, fill=pink}, 
day code={\node[every day]{\Tabelle};}
]
;

\fill[red, thick] (cal-2018-08-20) circle (7pt);
\node[red, draw, align =left] (Termin) at (cal-2018-08-21) {Termin\\ Termin};

\node[]{\begingroup\begin{tabular}{l >{\footnotesize}l l }\multirow{1}{*}{\Huge M}& aaaa  &\multirow{2}{*}{ M}\\{}& bbb &{}\end{tabular}\endgroup};
\end{tikzpicture}\end{document}

Hinweis: Unter normalen Umständen geht alles:

Öffne in Overleaf
\documentclass[border=5pt, varwidth]{standalone}\usepackage{multirow}\usepackage{array}\usepackage{amsmath, tikz}\begin{document}%schlecht: M$\vphantom{M}^a_b$\newcommand\Tabelle{\begin{tabular}{l >{\footnotesize}l l }\multirow{1}{*}{\Huge M}& aaaa  &\multirow{2}{*}{ M}\\{}& bbb &{}\end{tabular}}\Tabelle\tikz[]{\node{\Tabelle};}\end{document}
Viewing all 383 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>