Seite 1 von 2

Tikz Arrow Tip [-]

Verfasst: Mi 6. Mär 2013, 16:42
von wojoeraf
Moin,

Laut Tikz Manual sollten diese Pfeilspitzen funktionieren: [-]
Im Minimalbeispiel funktionieren sie aber nicht. (-) hingegen klappt prima.
[-[ funktioniert auch.
Aber für Intervalle hätte ich gerne [-]
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{arrows}

\begin{document}
\begin{tikzpicture}
\draw [(-),very thick] (0,1) -- (3,1);
\draw [[-],very thick] (0,0) -- (3,0);
\end{tikzpicture}
\end{document}
Bin für jede Hilfe dankbar.

Grüße
Rafi

Verfasst: Mi 6. Mär 2013, 16:58
von iTob
Das problem in dem Fall ist, dass die schließende Klammer von [-] aus LaTeX--Sicht das optionale Argument beendet und nicht als Teil des Pfeilstils gewertet werden kann. Umschließe deine Angabe mit geschweiften Klammern und es klappt: {[-]}

Vielleicht könnte man auch drüber nachdenken, einen eigene Stil für intervalle zu definieren, zum Beispiel:
\documentclass{scrartcl} 
\usepackage[ngerman]{babel} 
\usepackage{tikz} 
\usetikzlibrary{arrows} 

\tikzset{
	intervall/.style={[-],very thick},
}

\begin{document} 
\begin{tikzpicture} 
\draw [(-),very thick] (0,1) -- (3,1); 
\draw [intervall] (0,0) -- (3,0); 
\end{tikzpicture} 
\end{document}
Dann könnte man sich die geschweiften Klammern sparen. Außerdem wäre das deutlich schöner im Sinne eines logischen Markups, daher auch übersichtlicher und später leicht änderbar …

PS: Schönes Minimalbeispiel! :!:

Verfasst: Mi 6. Mär 2013, 17:29
von wojoeraf
Danke iTob,

habe es noch erweitert, für halboffene und offene Intervalle.
Die shorten Option war nötig, damit die eckigen Klammern exakt auf der Zahl liegen.
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{arrows}

\tikzset{
cinterc/.style={[-], shorten <=-1pt, shorten >=-1pt, very thick},
cintero/.style={[-[, shorten <=-1pt, shorten >=-2.5pt, very thick},
ointero/.style={]-[, shorten <=-2.5pt, shorten >=-2.5pt, very thick},
ointerc/.style={]-], shorten <=-2.5pt, shorten >=-1pt, very thick},
}
\begin{document}
\begin{tikzpicture}
%Achse
\draw[-triangle 45,color=green] (0,0) -- (9.5,0);
\foreach \x in {0,1,2,3,4,5,6,7,8,9}
\draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$};
%Intervalle
\draw [cinterc] (0,0) -- (1,0);
\draw [cintero] (2,0) -- (3,0);
\draw [ointero] (4,0) -- (5,0);
\draw [ointerc] (6,0) -- (7,0);
\end{tikzpicture}
\end{document}
Noch schöner wäre wahrscheinlich sogar nur cc, co, oo und oc für die Intervalle.
Falls du noch einen konstukriven Vorschlag hast, immer her damit ;)
Da ich Tikz noch nicht lange nutze sind auch Kleinigkeit goldwert.

Danke nochmal und Grüße
Rafi[/code]

Verfasst: Mi 6. Mär 2013, 18:07
von Stefan Kottwitz
Hallo Rafi,

sieht gut aus!

Wenn Du ein fertiges Bild hast, und es in der TikZ Galerie auf http://texample.net veröffentlichen möchtest, sag mir gern Bescheid.

Stefan

Verfasst: Mi 6. Mär 2013, 18:12
von iTob
Hi Rafi,

klar kann ich noch ein paar Sachen zu deinem Code anmerken, viel gibt’s allerdings nicht …
  • color=xxx kannst du generell auch durch xxx ersetzen. TikZ probier bei unbekannten Optionen aus, ob vielleicht eine Farbe gemeint sein könnte, wenn es eine passende Farbe gibt, wird diese genommen.
  • Um deine Strichlein zu zeichene, kannst du auch als erste Koordinate (\x,0.2pt) verwenden und die Zweite dann mit einem vorangestellten ++ relativ auf diese beziehen (siehe 13.4 Relative and Incremental Coordinates). Das ist etwas kürzer, also die Sache mit dem shift.
  • \foreach ist schlauer als man denkt und kann Folgen selbstständig erkennen und vervollständigen, so dass du deine Liste zu {0,1,...,9} vereinfachen kannst.
  • Ich habe mir angewöhnt, den zu \foreach gehörigen Befehl in der folgenden Zeile einzurücken, das erhöht die Übersichtlichkeit.
  • Ich wüsste so nix, was gegen cc statt cintervalc spricht, du musst nur wissen, was du dir damit sagen willst.
  • Ich würd’ die Achse nicht grün machen ;-)
\documentclass{scrartcl} 
\usepackage[ngerman]{babel} 
\usepackage{tikz} 
\usetikzlibrary{arrows} 

\tikzset{ 
cc/.style={[-], shorten <=-1pt, shorten >=-1pt, very thick}, 
cintero/.style={[-[, shorten <=-1pt, shorten >=-2.5pt, very thick}, 
ointero/.style={]-[, shorten <=-2.5pt, shorten >=-2.5pt, very thick}, 
ointerc/.style={]-], shorten <=-2.5pt, shorten >=-1pt, very thick}, 
} 
\begin{document} 
\begin{tikzpicture} 
%Achse 
\draw[-triangle 45,green] (0,0) -- (9.5,0); 
\foreach \x in {0,1,...,9} 
   \draw (\x,2pt) -- ++(0pt,-4pt) node[below] {\footnotesize $\x$}; 
%Intervalle 
\draw [cc] (0,0) -- (1,0); 
\draw [cintero] (2,0) -- (3,0); 
\draw [ointero] (4,0) -- (5,0); 
\draw [ointerc] (6,0) -- (7,0); 
\end{tikzpicture} 
\end{document} 
Grüße
Tobi

PS: Wenn deine (ursprüngliche) Frage beantwortet ist, passe bitte den Status entsprechend an ;-)

PS@Stefan: Meine Beispiele zu Lichtbrechung in Linsen sind immer noch nicht drin ;-) Bin ich schon wieder im Spam untergegangen?

Verfasst: Mi 6. Mär 2013, 18:32
von Stefan Kottwitz
Hi Tobi,

danke für die Erinnerung, ich muss mal nachsehen. Vllt. gesehen und wegen Zeitmangel noch nicht bearbeitet, verloren geht nichts.

Stefan

Verfasst: Mi 6. Mär 2013, 18:33
von iTob
Alles klar, kein Stress – bot sich grad nur an, da mal nachzuhaken ;-)

Verfasst: Do 7. Mär 2013, 08:52
von wojoeraf
@Tobi
Die Achse habe ich mir aus Geogebra generieren lassen, dort kann man nach PGF / TikZ exportieren.
Das Shift hat mir also Geogebra generiert, genau so, wie die Foreach Schleife ;)
Das mit dem vorangestellten ++ habe ich nicht in die Schleife umsetzen können, kannst du mir nochmal einen Code zeigen, wie das funktioniert?
Das Grün habe ich nur genommen, damit ihr es von den Intervallen unterscheiden könnt ;)

@Stefan
Ist dieses Texample eigentlich lizenzfrei? Ich habe da nämlich auch schon was schönes gesehen, was ich gerne in meine Arbeit 1zu1 übernehmen würde.
Ich stelle meine Kleineigkeit natürlich auch gerne zur Verfügung, sobald der Code ausgereift ist :)

Grüße
Rafi

Verfasst: Do 7. Mär 2013, 09:53
von Stefan Kottwitz
wojoeraf hat geschrieben:Ist dieses Texample eigentlich lizenzfrei? Ich habe da nämlich auch schon was schönes gesehen, was ich gerne in meine Arbeit 1zu1 übernehmen würde.
Es ist eine freie Lizenz, konkret Creative Commons mit Attribution, siehe About the PGF and TikZ examples gallery.

Das bedeutet, jeder kann
  • die Beispiele kopieren, weitergeben, veröffentlichen
  • die Beispiele verändern und generell weiterverarbeiten
unter der Voraussetzung Kurz: getrost weiterverwenden und erwähnen, woher es stammt. ;-)

Stefan

Verfasst: Do 7. Mär 2013, 10:33
von wojoeraf
Ok, also wenn ich etwas als Code übernehme, schreibe ich den Autor und texample.net mit rein.
Und wie sieht es im PDF-Dokument aus: Dort wird im Abbildungsverzeichnis ebenfalls auf den Autor und texeample.net verwiesen?

Konkret handelt es sich bei mir um ein Schülerheft, welches über einen Verlag vertrieben werden soll.
Vertraglich sieht es so aus, dass ich beim Verkauf (des Heftes an den Verlag) sämtliche Rechte, auch die Urheberrechte, an den Verlag übertrage.
Darf ich da immernoch Werke unter der Creative Commons Lizenz mit rein nehmen?