Используйте длины векторов tikzpicture для указания размера узла

Используйте длины векторов tikzpicture для указания размера узла

Я хотел бы создать узел с minimum width=αx, где x — длина вектора координаты x, указанного в среде tikzpicture, например \begin{tikzpicture}[x=0.1cm,y=2.5ex]. Возможно ли это?

решение1

Как предложено вэтот ответ, вы можете определить переменные для установки масштабов x и y, а также стиля для вашего узла, как в следующем примере:

\documentclass{article}
\usepackage{tikz}

\newcommand{\unitx}{1cm}
\newcommand{\unity}{1cm}

\tikzset{%
    box/.style 2 args = {%
        rectangle,
        draw,
        minimum width  = #1*\unitx,
        minimum height = #2*\unity
    },
    every tikzpicture/.append style = {
        x = \unitx,
        y = \unity
    }
}

\begin{document}

    \begin{tikzpicture}

        \node[box={2}{3}] at (0, 0) {Hello};

    \end{tikzpicture}

\renewcommand{\unitx}{5cm}
\renewcommand{\unity}{3cm}

    \begin{tikzpicture}

        \node[box={2}{3}] at (0, 0) {Hello};

    \end{tikzpicture}

\end{document}

При этом вы накладываете заданный масштаб на xкаждую yсреду tikzpictureи определяете стиль для прямоугольного узла с minimum widthучетом minimum heightэтого масштаба.

Масштабы хранятся в переменных \unitxи \unity, которые вы можете переопределить в любом месте документа, чтобы изменить масштаб.

Если вы не хотите применять масштабирование глобально, удалите every tikzpictureаргумент команды \tikzsetи примените масштабирование локально, как в следующем примере:

\documentclass{standalone}
\usepackage{tikz}

\newcommand{\unitx}{2cm}
\newcommand{\unity}{1cm}

\tikzset{%
    box/.style 2 args = {%
        rectangle,
        draw,
        minimum width  = #1*\unitx,
        minimum height = #2*\unity
    }
}

\begin{document}

    \begin{tikzpicture}[x = \unitx, y = \unity]

        \node[box={2}{3}] at (0, 0) {Hello};

    \end{tikzpicture}

\end{document}

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