\tikzset für alle

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: \tikzset für alle

von Holunderbaum » Fr 14. Dez 2018, 12:00

Vielen Dank! Ja, das scheint zu funktionieren. Was mir dazu noch nicht ganz klar ist:

1) Warum muss ich extra die Pfeilspitzen als my<-my> speichern? Bzw. warum funktioniert es nicht auch ohne diesem Schritt?

Die Idee, den Style "->" zu editieren, hatte ich auch mal, aber ohne das mit den Pfeilspitzen und deshalb funktionierte es nicht.

2) Wenn ich es richtig verstehe, wird hiermit -> überschrieben und nicht erweitert, was ja bedeuten sollte, dass alle Definitionen von -> weg sind. Ist das dann in der Form "sicher" oder werden durch das ursprüngliche -> noch andere Eigenschaften definiert, die ich mit definieren müsste in meinem eigenen Style, damit sie nicht verloren gehen?

von esdd » Do 13. Dez 2018, 10:04

Das folgende scheint zu tun, was Du möchtest:
\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}

\tikzset{
  >=Stealth[round],
  myStyle/.style={
    my<-my>/.tip=>,
    my>-my< /.tip = >[reversed],
    ->/.style={shorten >= 4.2pt,-my>},
    <-/.style={shorten <=4.2pt,my<-},
    <->/.style={shorten <=4.2pt,shorten >=4.2pt, my<-my>}
  }
}

\begin{document}
\begin{figure}[hb]
  \begin{tikzpicture}[myStyle]
    \node[draw] (A) at (0, 0) {$A$};
    \node[draw] (B) at (2, 0) {$B$};
    \draw (A) -- (B);
  \end{tikzpicture}
  \par\bigskip
  \begin{tikzpicture}[myStyle]
    \node[draw] (A) at (0, 0) {$A$};
    \node[draw] (B) at (2, 0) {$B$};
    \draw[->] (A) -- (B);
  \end{tikzpicture}
  \par\bigskip
  \begin{tikzpicture}[myStyle]
    \node[draw] (A) at (0, 0) {$A$};
    \node[draw] (B) at (2, 0) {$B$};
    \draw[<->] (A) -- (B);
  \end{tikzpicture}
\end{figure}
\end{document}

von Holunderbaum » Mi 12. Dez 2018, 14:47

Ah, stimmt, das muss ich dann übersehen haben. Vielen Dank!


Hoffentlich kennt noch jemand eine Lösung für das eigentliche Problem, aber der Titel des Themas ist ja jetzt nicht so aussagekräftig geworden (dank des Bugs). :)

Re: \tikzset für alle

von Bartman » Di 11. Dez 2018, 17:54

Holunderbaum hat geschrieben:PS: Ich sehe oft ein zusätzliches Paar { } um >=Stealth[round] herum, also >={Stealth[round]}. Sind die wirklich notwendig?
Das ist der Fall, wenn Du ein optionales Argument in einem optionalen Argument angeben möchtest.

von Holunderbaum » Di 11. Dez 2018, 16:44

Hm, ich sehe gerade, dass das Forum den Titel gekürzt hat. Dieser war ursprünglich
\tikzset für alle "->", aber nicht für andere Linienarten
[/quote]

\tikzset für alle

von Holunderbaum » Di 11. Dez 2018, 16:42

Hallo,

ich frage mich aktuell, ob es möglich ist, Optionen via \tikzset für alle \draw[->] zu setzen, die aber auch nur genau dann ausgeführt werden und nicht z.B. auch für normale Linien oder andere Pfeilarten. (Wobei ich aktuell keine anderen Pfeilarten verwende.)

Hintergrund ist der, dass ich gerne alle Pfeile ein wenig kürzen möchte, normale Linien aber nicht gekürzt werden sollen. Ob dies im weiteren Verlauf noch andere Eigenschaften betrifft, weiß ich aktuell noch nicht.

Einen eigenen "myArrow" Style zu definieren, wäre zwar möglich, aber etwas umständlicher, da ich den dann jedem \draw[->,myArrow] mitgeben müsste. Daher frage ich mich, ob das nicht irgendwie geht...

Am Ende möchte ich einen Style "myStyle" definieren, da die besagten Änderungen nur auf manche Bilder angewandt werden soll.

Hier ein kleines Minimalbeispiel:
\documentclass{scrartcl}

\usepackage{tikz}
\usetikzlibrary{arrows.meta}

\tikzset{>=Stealth[round]}

% Ich suche etwas wie
% \tikzset{...bitte nur "->"...={shorten >=4.2pt,>=Stealth[round]}}

% Bzw. eigentlich:
% \tikzset{
%     myStyle/.style={
%         ...bitte nur "->"...={shorten >=4.2pt,>=Stealth[round]}}
%     }
% }

\begin{document}
    \begin{figure}[h!]
        % So sollen normale Linien sein (kein Abstand)
        \begin{tikzpicture}
            \node[draw] (A) at (0, 0) {$A$};
            \node[draw] (B) at (2, 0) {$B$};

            \draw (A) -- (B);
        \end{tikzpicture}\\

        % So sollen Pfeile nicht sein (kein Abstand)
        \begin{tikzpicture}%[myStyle]
            \node[draw] (A) at (0, 0) {$A$};
            \node[draw] (B) at (2, 0) {$B$};

            \draw[->] (A) -- (B);
        \end{tikzpicture}\\

        % So sollen Pfeile sein (mit Abstand), aber ohne einen extra
        % style definieren zu müssen
        \begin{tikzpicture}[myArrow/.style={shorten >=4.2pt}]
            \node[draw] (A) at (0, 0) {$A$};
            \node[draw] (B) at (2, 0) {$B$};

            \draw[->,myArrow] (A) -- (B);
        \end{tikzpicture}
    \end{figure}
\end{document}

Vielen Dank!

Holunderbaum

PS: Ich sehe oft ein zusätzliches Paar { } um >=Stealth[round] herum, also >={Stealth[round]}. Sind die wirklich notwendig?

Nach oben