Синтаксис функции \tikzmath{function....?

Синтаксис функции \tikzmath{function....?

Что не так с синтаксисом двух \tikzmathопределений функций?

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{math}
\tikzmath{function f(\x) { return sin(\x);
  }

\begin{document}

\begin{tikzpicture}    

  \tikzmath{function g(\x) { return cos(\x);
  };

\end{tikzpicture}

\end{document}

(Пожалуйста, будьте снисходительны: я все еще новичок в TikZ!)

решение1

Вот небольшой пример использования. Обратите внимание, что я использую \tikzmathмежду \begin{document}и \end{document}, а не в преамбуле.

О размещении полуколонн: в руководстве указано, чтокаждое выражение (tikzmath) должно заканчиваться точкой с запятой.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{math}

\begin{document}

\tikzmath{
    function f(\x) { 
        return sin(\x);
        };
    real \f;
    \f = f(90);
    print \f;
    print \newline; % new line; the next line begins with no indent
    print f(45); % prints "f(45)" verbatim
    % No blank line allowed
    print \par; % new paragraph; the next line begins with an indent
    \f = f(-45);
    print \f;
}

Foo

\begin{tikzpicture}    

\tikzmath{
    function g(\x) {
        return cos(\x);
        };
    real \g;
    \g = g(180);
    };
\node at (0,0) {\g}; % use \g outside of \tikzmath, in a tikz node 
\end{tikzpicture}

\end{document}

введите описание изображения здесь

Редактировать:подробнее о том, что такое утверждение.

Согласно pgf/TiкВ руководстве Z в команде есть различные типы операторов \tikzmath:

  • Назначение (например \a = 3 + 4;или let \x = 2*3;)
  • «Тип-декларация» ( int \i;, real \z;или coordinate \c;)
  • итерации (например for \n in {1,...,5} {⟨other statements⟩};)
  • условные предложения (например if ⟨condition⟩ then ⟨statements⟩ else ⟨statements⟩;)
  • объявление функции (например function product(\x,\y) {return \x*\y;};, обратите внимание, что здесь return \x*\y;также есть оператор, а второй ;в первом коде предназначен для оператора объявления функции)

Если оператор начинается с фигурной скобки {, то за закрывающей фигурной скобкой }должна следовать точка с запятой.

Здесь я беру пример из pgf/TiкZ руководство, с дополнительными комментариями (раздел 58.7)Выполнение кода вне парсера, стр. 708 в текущем руководстве):

\begin{tikzpicture}
\draw [help lines] grid (3,2); % a common `\draw` TikZ command,
                               % which ends with a ";"
\tikzmath{ % begin of the \tikzmath command. Not a statemnt
  coordinate \c;               % a statement
  for \x in {0,10,...,360} {   % begin of a statement, no ";" here
    \c = (1.5cm, 1cm) + (\x:1cm and 0.5cm); % a statement inside
                                            % the for statement
    { \fill (\c) circle [radius=1pt]; }; % a second statement
                                         % inside the for statement.
                                         % In it, a common TikZ command
                                         % (`\draw`) which ends as usual
                                         % by a semi-column.
  }; % the end of the for statement. Ended by a semi-column
} % end of \tikzmath command. It's not a statement
\end{tikzpicture}

Обратите внимание, что команда Tikz \drawвнутри \tikzmathзаключена в фигурные скобки, поэтому после в ;конце \drawтакже стоит ;после закрывающей фигурной скобки.

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