Как выполнить "сложные" расчеты в LaTeX/TikZ
Я ожидаю, что на этот вопрос уже отвечали тысячу раз, но я просто не могу найти решение своей проблемы =(
Я хочу вычислить некоторые значения в LaTeX (TikZ), некоторые из которых являются длинами (например, 10 pt), некоторые нет. Пока расчеты имеют очень простые формы, такие как a*b+c
все хорошо, но если мне нужны скобки типа (a+b)*(c+d)
LaTeX жалуется. Кроме того, если у меня есть вложенные определения, они не решаются, как ожидалось. Пример:
\def\varA{1+2}
\def\varB{10}
% I want to calculate (1+2)*10 or 10*(1+2), respectively.
\def\varC{\varA*\varB} % evaluates to 21
\def\varD{\varB*\varA} % evaluates to 12
Итак, в основном мой вопрос: как правильно (или рекомендуется) делать вычисления в LaTeX?
В качестве более реалистичного примера, вот что я на самом деле хочу сделать и просто не могу:
% total height of my TikZ image
\def\myheight{20ex}
% five nodes shall be drawn as a stack
\def\numnodes{5}
% but there shall be some space at the top (like a 6th node)
\def\heightpernodeA{\myheight / (\numnodes + 1)} % fails whenever I want to use it
% workaround?
\def\numnodesplusone{\numnodes + 1}
\def\heightpernodeB{\myheight / \numnodesplusone} % fails for the reason explained above
К сожалению, я не могу переопределить \numnodes на 6, так как я использую переменную для различных вычислений.
с уважением
1 ответ
Ты можешь использовать \pgfmathsetmacro
для более сложного расчета. Вам нужно будет удалить блок в myheight
хоть:
% total height of my TikZ image
\def\myheight{20}
% five nodes shall be drawn as a stack
\def\numnodes{5}
% but there shall be some space at the top (like a 6th node)
\pgfmathsetmacro\heightpernodeA{\myheight / (\numnodes + 1)}
Вы можете добавить устройство обратно, когда используете его: \draw (0,0) -- ({\heightpernodeA ex},{1});