Folgendes Bildzeichen (Logo) ist mit TikZ geschaffen. Um eine gewisse "Verknotungswirkung" zu erzielen, wurden bestimmte Teile durch zusätzliche Elemente überdeckt. Leider hat das zur Folge, dass die offenen Kanten als hauchzarte weiße Striche noch zu sehen sind, Wie kann man diese wegbekommen, damit die drei Elemente geschlossen wirken? Open in Online-Editor
\documentclass{minimal} \usepackage[ngerman]{babel} \usepackage{tikz} \begin{document} \begin{tikzpicture} \def \l{4} % Einheitslänge \def \d{1.2mm} % Einheitsdicke \def \b{5mm} % Abstand als Faktor \colorlet{dunk}{white!76!black} \colorlet{mitt}{white!80!black} \colorlet{hell}{white!84!black} \tikzstyle{eck} = [line width=\d, white, double distance=\b] \draw[double=mitt][eck] (0, \l) -- (\l, 0) -- (0, -\l) -- (-\l, 0) -- cycle; \draw[double=dunk][eck] (0, \l) -- ({\l * cos(30)}, -{\l * sin(30)}) -- (-{\l * cos(30)}, -{\l * sin(30)}) -- cycle; \draw[double=hell][eck] (0, 0) circle [radius=\l]; \draw[double=mitt][eck] (45: {(\l / sin(45) / 2}) -- (0: \l) -- (315: {(\l / sin(45) / 2}); \draw[double=mitt][eck] (225: {(\l / sin(45) / 2}) -- (180: \l) -- (135: {(\l / sin(45) / 2}); \draw[double=mitt][eck] (225: {(\l / sin(45) / 2}) -- (270: \l) -- (315: {(\l / sin(45) / 2}); \draw[double=dunk][eck] ({\l * cos(30) * 0.8}, -{\l * sin(30)}) -- (-{\l * cos(30) * 0.8}, -{\l * sin(30)}); \draw[double=dunk][eck] (30:{\l * sin(30)}) -- (90:{\l}) -- (150:{\l * sin(30)}); \end{tikzpicture} \end{document} |
Mit Open in Online-Editor
\documentclass[margin=5pt]{standalone} \usepackage{tikz} \begin{document} \begin{tikzpicture} \newcommand*\Einheitslaenge{4} \newcommand*\Einheitsdicke{1.2mm} \newcommand*\Breite{5mm} \colorlet{dunk}{white!76!black} \colorlet{mitt}{white!80!black} \colorlet{hell}{white!84!black} \tikzset{ eck/.style = {line width=\Einheitsdicke, white, double distance=\Breite,double=#1}, oben/.style = {line width=2*\Einheitsdicke+\Breite, white, postaction={draw=#1, line width=\Breite, shorten <=-1pt, shorten >=-1pt} } } \begin{scope}[scale=\Einheitslaenge] \draw[eck=mitt] (0, 1) -- (1, 0) -- (0, -1) -- (-1, 0) -- cycle; \draw[eck=dunk] (0, 1) -- ({1 * cos(30)}, -{1 * sin(30)}) -- (-{1 * cos(30)}, -{1 * sin(30)}) -- cycle; \draw[eck=hell] (0, 0) circle [radius=1]; % \draw[oben=mitt] (45: {(1 / sin(45) / 2}) -- (0: 1) -- (270: 1) -- (180: 1) -- (135: {(1 / sin(45) / 2}); % \draw[oben=dunk] ({1 * cos(30) * 0.8}, -{1 * sin(30)}) -- (-{1 * cos(30) * 0.8}, -{1 * sin(30)}); \draw[oben=dunk] (30:{1 * sin(30)}) -- (90:{1}) -- (150:{1 * sin(30)}); \end{scope} \end{tikzpicture} \end{document} beantwortet 29 Okt '15, 09:52 esdd Toll! Wäre ich selbst nie drauf gekommen. Vielen Dank! genau so soll es sein
(30 Okt '15, 02:47)
rix
Jetzt habe ich ein kleines Problem: Ich möchte die ganze Konstruktion gerne in ein "newcommand" reinpacken und über Parameter steuern. Leider geht Latex / TikZ davon aus, dass "double=#1" und "draw=#1" mit Parametern des "newcommand" gefüllt werden müssen?! Wie kann man das umgehen?
(30 Okt '15, 09:48)
rix
1
@rix Wie bei anderen verschachtelten Makrodefinitionen auch: bei den Argumenten der inneren Definition musst Du die Rauten verdoppeln, also
(30 Okt '15, 11:18)
esdd
@nix: Das ist übrigens eigentlich eine neue Frage, auf die es bereits eine Antwort gibt.
(31 Okt '15, 17:25)
saputello
|
Bitte achte auf korrektes
Markdown
. Es macht keinen guten Eindruck, wenn man sich nicht einmal die Mühe macht, den Code korrekt darzustellen.Die Klasse
minimal
ist für vollständige Minimalbeispiele unbrauchbar, weil sie keine vollständige Klasse ist, sondern lediglich dazu gedacht ist, den LaTeX-Kern zu testen. Verwende besser beispielsweisearticle
.\def
zu verwenden ist immer gefährlich, da man damit Gefahr läuft, eine vorhandene und möglicherweise wichtige Anweisung zu überschreiben. Verwende daher in der Regel\newcommand
. Das meldet einen Fehler, wenn man versehentlich eine vorhandene Anweisung überschreibt.Tut mir leid, das war nicht meine Absicht. Der Quelltext lässt sich hier ziemlich schlecht einfügen. Einfacherer wären zwei Marken ("tags") und fertig...
Markieren und
Ctrl+k
(Neudeutsch:Strg+K
) drücken ist doch nun wirklich nicht zu viel verlangt! Aber wenn Dir Systeme mit Tags lieber sind → goLaTeX. Dort finden sich dann aber immer wieder Beiträge mit Tag-Fehlern oder abgeschaltetem BBCode. Wirklich einfacher scheint das also auch nicht zu sein.