Где находится начало координат в тикз

Где находится начало координат в тикз

Я пытаюсь создать равносторонний треугольник на своей бумаге с помощью LaTeX, но я не понимаю, как tikz (или tikzpicture) выбирает, где находится начало (0,0) его координат. После написания текста я хочу нарисовать свой треугольник на правой стороне моей бумаги с помощью следующего кода:

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

Это создает:

первое изображение кода

Моя цель — нарисовать треугольник на 10 см правее, вызвав функцию\треугольникс первым параметром{10}. Как вы можете видеть в моем коде, я хочу, чтобы первая точка треугольника была нарисована в моих уже выбранных координатах (10,0), которые являются параметрами моей новой команды.\треугольник. Проблема в том, что начало координат всегда одно и то же, что бы я ни делал с параметрами. Результат будет таким же, если я поставлю{20}вместо{10}, и я хочу, чтобы он был смещен вправо на 10 или 20 см в зависимости от моих параметров. С другой стороны, если я изменю параметр с числом, которое не является тем, которое я выбрал, когда я вызываю свою новую команду следующим образом:

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

(В этом коде я изменил первую цифру #1 на 20, заменив 10 на 20).

Затем tikz учитывает это изменение и показывает мне деформированный треугольник с начальной точкой справа:

второе изображение кода

Это как если бы tikz всегда хотел поместить начало координат в одно и то же место, независимо от того, какую константу (#1 и #2) я добавляю к своим координатам. Что мне нужно сделать, чтобы переместить мой треугольник в соответствии с параметрами, которые я даю моей новой команде\треугольник?

решение1

Есть некоторые аспекты, которые вам следует знать, в произвольном порядке. Сначала давайте посмотрим на скриншот кода ниже.

результат

(1) Белые треугольники — из вашего макроса, с некоторыми отличиями в самом коде. Существует соглашение, что ввод новой строки (на самом деле пустой строки) создает набор новой строки.

(2) LaTeX — это набор текста, а не машинописный текст, как вы знаете из Word или других редакторов. Он пытается набирать сущности. В вашем случае это:

  • отдельные символы, включая пробел
  • что-то \newcommandсозданное (белый треугольник)
  • и может быть еще много

Представьте себе рамку вокруг каждой буквы или треугольник, созданный из свинца, как во времена Гутенберга или вашей прошлой местной газеты.

LaTeX продолжит склеивать сущность за сущностью, пока не закончит, пытаясь понять, что он «знает» как «хорошо набранный результат».

(3) Это хорошо известный эффект, когда последний символ каждой строки внутри \newcommandдолжен заканчиваться на %(т. е. комментировать остальную часть строки). Если вы пропустите это, LaTeX попытается набрать пробелы, которые вы не планировали (упрощенно).

(4) Мои два варианта вашего треугольника, бирюзовый и желтый, отличаются следующим образом:

  • чирок имеет горизонтальное пространство (ваше искомое смещение) 7 см (при 10 см разница не будет достаточно заметна) через\hspace{}
  • желтый вместо этого использует \hfill: Он сдвигает «блок» в крайнее положение вот здесь.

(5) Пожалуйста, признайте мой европейский выбор в \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}

Связанный контент