¿Dónde está el origen de coordenadas en tikz?

¿Dónde está el origen de coordenadas en tikz?

Estoy intentando crear un triángulo equilátero en mi papel usando LaTeX, pero no entiendo cómo tikz (o tikzpicture) elige dónde está el origen (0,0) de sus coordenadas. Después de escribir un texto, quiero dibujar mi triángulo en el lado derecho de mi papel con el siguiente código:

\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}

Esto crea:

primera imagen de código

Mi objetivo es dibujar el triángulo 10 cm a la derecha, llamando a la función\triángulocon el primer parámetro{10}. Como puedes ver en mi código, quiero que el primer punto del triángulo se dibuje en mis coordenadas ya elegidas (10,0), que son los parámetros de mi nuevo comando.\triángulo. El problema es que el origen es siempre el mismo, no importa lo que haga con mis parámetros. El resultado será el mismo si pongo{20}en lugar de{10}, y quiero que se desplace hacia la derecha 10 o 20 cm según mis parámetros. Por otro lado, si cambio un parámetro con un número que no es el que elegí cuando llamo a mi nuevo comando así:

...
\draw (20,#2)--(#1+0.5*#3,#2+0.86*#3)--(#1+1*#3,#2)--cycle;
...
\triangle {10}{0}{3}
...

(Cambié en este código el primer número 1 por 20, reemplazando 10 por 20).

Luego tikz toma en cuenta este cambio y me muestra un triángulo deformado, con un punto de partida en el extremo derecho:

segunda imagen de código

Es como si tikz siempre quisiera poner el origen en el mismo lugar, sin importar qué constante (#1 y #2) agregue a mis coordenadas. ¿Qué tengo que hacer para poder mover mi triángulo según los parámetros que le doy a mi nuevo comando?\triángulo?

Respuesta1

Hay algunos aspectos que debes tener en cuenta, sin ningún orden en particular. Primero veamos la captura de pantalla del código a continuación.

resultado

(1) Los triángulos blancos son de su macro, con algunas diferencias en el código mismo. Existe la convención de que una nueva línea (en realidad una línea en blanco) escrita crea un conjunto tipográfico de nueva línea.

(2) LaTeX es composición tipográfica, no escritura a máquina, como quizás sepa por Word u otros editores. Intenta componer entidades. En tu caso estos son:

  • caracteres individuales, incluido el espacio
  • algo \newcommandcreado (triángulo blanco)
  • y pueden ser muchos más

Piense en un cuadro alrededor de cada letra, o triángulo, creado en plomo como en los viejos tiempos de Gutenberg o en el periódico local.

LaTeX continuará uniendo entidad por entidad, hasta que termine, tratando de realizar lo que "sabe" que es "un buen resultado tipográfico".

(3) Es un efecto bien conocido que el último carácter de cada línea dentro de a \newcommanddebe terminar con a %(es decir, comentando el resto de la línea). Si se lo pierde, LaTeX intenta componer espacios que no pretendía (simplificados).

(4) Mis dos variaciones de tu triángulo, verde azulado y amarillo, difieren de esta manera:

  • El verde azulado tiene un espacio horizontal (el desplazamiento buscado) de 7 cm (con 10 cm la diferencia no sería lo suficientemente visible) a través de\hspace{}
  • En su lugar, se usa el amarillo \hfill: desplaza el "bloque" al máximo aquí.

(5) Por favor reconozca mi elección europea en el \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}

información relacionada