
Ich versuche, mit LaTeX ein gleichseitiges Dreieck auf meinem Papier zu erstellen, verstehe aber nicht, wie tikz (oder tikzpicture) den Ursprung (0,0) seiner Koordinaten auswählt. Nachdem ich einen Text geschrieben habe, möchte ich mit dem folgenden Code mein Dreieck auf der rechten Seite meines Papiers zeichnen:
\documentclass[12pt,a4paper]{article}
\usepackage{tikz}
%parameters are the following : cooX , cooY , triangleSize
\newcommand{\triangle} [3] {
\begin{tikzpicture}
\draw (#1,#2)--(#1+0.5*#3,#2+0.86*#3)--(#1+1*#3,#2)--cycle;
\end{tikzpicture}
}
\begin{document}
\normalsize
Here is my text and the triangle
\triangle {10}{0}{3}
\end{document}
Dies schafft:
Mein Ziel ist es, das Dreieck 10 cm weiter rechts zu zeichnen, indem ich die Funktion\Dreieckmit erstem Parameter{10}. Wie Sie in meinem Code sehen können, möchte ich, dass der erste Punkt des Dreiecks auf den von mir bereits gewählten Koordinaten (10,0) gezeichnet wird, die die Parameter meines neuen Befehls sind\Dreieck. Das Problem ist, dass der Ursprung immer derselbe ist, egal was ich mit meinen Parametern mache. Das Ergebnis ist das gleiche, wenn ich{20}anstatt{10}, und ich möchte, dass es je nach meinen Parametern um 10 oder 20 cm nach rechts verschoben wird. Andererseits, wenn ich einen Parameter mit einer Nummer ändere, die nicht die ist, die ich gewählt habe, wenn ich meinen neuen Befehl wie folgt aufrufe:
...
\draw (20,#2)--(#1+0.5*#3,#2+0.86*#3)--(#1+1*#3,#2)--cycle;
...
\triangle {10}{0}{3}
...
(Ich habe in diesem Code die erste Nr. 1 durch eine 20 ersetzt und 10 durch 20 ersetzt).
Dann berücksichtigt Tikz diese Änderung und zeigt mir ein deformiertes Dreieck, mit einem Startpunkt ganz rechts:
Es ist, als ob Tikz den Ursprung immer an die gleiche Stelle setzen möchte, egal welche Konstante (#1 und #2) ich zu meinen Koordinaten hinzufüge. Was muss ich tun, um mein Dreieck entsprechend den Parametern zu verschieben, die ich meinem neuen Befehl gebe?\Dreieck?
Antwort1
Es gibt einige Aspekte, die Sie beachten sollten, in keiner bestimmten Reihenfolge. Sehen wir uns zunächst den Screenshot des folgenden Codes an.
(1) Die weißen Dreiecke stammen aus Ihrem Makro, mit einigen Unterschieden im Code selbst. Es gibt die Konvention, dass eine eingegebene neue Zeile (eigentlich eine leere Zeile) einen neuen Zeilentypsatz erstellt.
(2) LaTeX ist ein Textsatz, kein Schreibmaschinenschreiben, wie Sie es vielleicht von Word oder anderen Editoren kennen. Es versucht, Entitäten zu setzen. In Ihrem Fall sind dies:
- einzelne Zeichen, einschließlich Leerzeichen
- etwas, das ich
\newcommand
geschaffen habe (weißes Dreieck) - und kann noch viel mehr sein
Stellen Sie sich um jeden Buchstaben ein Kästchen oder Dreieck aus Blei vor, wie in den alten Zeiten von Gutenberg oder in Ihrer alten Lokalzeitung.
LaTeX wird weiterhin Entität für Entität zusammenfügen, bis es fertig ist, und versuchen, das zu erreichen, was es als „schön gesetztes Ergebnis“ „kennt“.
(3) Es ist ein bekannter Effekt, dass das letzte Zeichen jeder Zeile innerhalb von a \newcommand
mit einem enden sollte %
(also der Rest der Zeile auskommentiert wird). Wenn Sie dies vergessen, versucht LaTeX, Leerzeichen zu setzen, die Sie nicht beabsichtigt haben (vereinfacht).
(4) Meine beiden Varianten Ihres Dreiecks, blaugrün und gelb, unterscheiden sich folgendermaßen:
- teal hat einen horizontalen Abstand (deine gewünschte Verschiebung) von 7cm (bei 10cm wäre der Unterschied nicht sichtbar genug) via
\hspace{}
- Gelb verwendet
\hfill
stattdessen: Es verschiebt den „Block“ ganz nach außen, genau hierher.
(5) Bitte beachten Sie meine europäische Wahl im \documentclass
;-)
\documentclass[12pt,a4paper]{article}
\usepackage{tikz}
%parameters are the following : cooX , cooY , triangleSize
\newcommand{\trngl}[3]{%
\begin{tikzpicture}%
\draw (#1,#2)--(#1+0.5*#3,#2+0.86*#3)--(#1+1*#3,#2)--cycle;%
\end{tikzpicture}%
}
\newcommand{\trnglA}[3]{%
\hspace{7cm}\begin{tikzpicture}% <<< 7cm to see the difference
\draw[fill=teal!20] (#1,#2)--(#1+0.5*#3,#2+0.86*#3)--(#1+1*#3,#2)--cycle;%
\end{tikzpicture}%
}
\newcommand{\trnglB}[3]{%
\hfill\begin{tikzpicture}%
\draw[fill=yellow!20] (#1,#2)--(#1+0.5*#3,#2+0.86*#3)--(#1+1*#3,#2)--cycle;%
\end{tikzpicture}%
}
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\begin{document}
\normalsize
% ~~~ variations of your code: WATCH the differences ~~~~~~~~~~~~~~~~~~
Here is my text and the \textbf{triangle} on same line \trngl{10}{0}{3}
Here is my text and the \textbf{triangle} still on same line
\trngl{10}{0}{3}
Here is my text and the \textbf{triangle} on next line
\trngl{10}{0}{3}
% ~~~ using some (hopefully correct) \hspace{} ~~~~~~~~~~~~~~
Here is my text and the \textbf{triangleA} on next line
\trnglA{10}{0}{3}
% ~~~ using \hfill ~~~~~~~~~~~~~~~~~~~~
Here is my text and the \textbf{triangleB} on next line
\trnglB{10}{0}{3}
\end{document}