
Я хочу нарисовать параллелограммы с фиксированным углом, шириной и высотой, но, похоже, trapezium
в PGF/TikZ нельзя задать высоту, не изменяя углы.
\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\tikzstyle{every node}=[trapezium, draw, minimum width=3cm,
trapezium left angle=120, trapezium right angle=60]
\node[trapezium stretches body]
at (0,0) {A};
\node[trapezium stretches body, rotate=-30]
at (0,1.5) {A rotate $-30^\circ$};
\node[minimum height=1cm, trapezium stretches body]
at (5,0) {B};
\node[minimum height=1cm, trapezium stretches body, rotate=-30]
at (5,1.8) {B rotate $-30^\circ$};
\node[minimum height=1cm]
at (0,-2) {C};
\node[minimum height=1cm, rotate=-30]
at (0,-4) {C rotate $-30^\circ$};
\node[minimum height=1cm, trapezium stretches]
at (5,-2) {D};
\node[minimum height=1cm, trapezium stretches, rotate=-30]
at (5,-4) {D rotate $-30^\circ$};
\end{tikzpicture}
\end{document}
Выход:
Мне нужна вертикально-толстая версия буквы А той же ширины.
Углы A и B разные, просто добавляем "минимальная высота". Повернутая версия A имеет вертикальные западную/восточную стороны, это то, что мне нужно. Повернутая версия B не имеет вертикальных западной/восточной сторон, однако мне нужен "более высокий" параллелограмм с такими же углами и шириной, как у A.
С: Удаление "трапеция растягивает тело" приводит к параллелограмму, ширина и высота которого неконтролируемы. D: Замена "трапеция растягивает тело" на "трапеция растягивается"ничего не помогает.
решение1
Может быть, следующее может лучше объяснить, что происходит. Странные вещи, происходящие, когда текст становится короче, а узел становится выше и короче по мере того, как текст становится длиннее, происходят из-за соблюдения ограничений.
\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\tikzstyle{every node}=[trapezium, draw, minimum width=3cm,
trapezium left angle=120, trapezium right angle=60]
\node[trapezium stretches=false,minimum height=1cm]
at (0,0) {A};
\node[trapezium stretches=false,minimum height=1cm]
at (0,1.5) {\fbox{A long }};
\node[trapezium stretches=false,minimum height=1cm]
at (0,3) {\fbox{A long text}};
\draw[thick,green,|-|] (-1.5,-.5) -- (1.5,-0.5);
\draw[thick,green,|-|] (-1.5,0.5) -- (-1.5,-0.5);
\draw[thick,blue,|-|] (-1.5,1) -- (1.5,1);
\draw[thick,blue,|-|] (-1.5,1) -- (-1.5,2);
\draw[thick,red,|-|] (-1.5,2.5) -- (1.5,2.5);
\draw[thick,red,|-|] (-1.5,2.5) -- (-1.5,3.5);
\end{tikzpicture}
\end{document}
Мы видим, что минимальная ширина и минимальная высота соблюдаются, а затем, если есть место, узел становится выше, потому что для этого нет ограничений. Другими словами, есть только ограничение на минимумы, а не на максимумы, поэтому в нижнем примере соблюдаются минимумы, а затем углы пытаются совпасть. Если узел короче, а углы фиксированы, то минимальная высота не будет соблюдаться и т. д. Поэтому для этого предлагаются некоторые варианты, а именно варианты растяжения. Если мы превратим все ложные ключи в истинные, мы получим
Таким образом, угол формы деформируется, чтобы соответствовать ограничениям. Аналогично, ключ trapezium stretches body
только растягивает ширину. Но если угол установлен, то это вопрос соблюдения ограничений и последующей проверки, является ли угол осуществимым. Поэтому необходим другой тип ограничения. Это может быть использование меток на якоре center
или рисование его поверх узлов независимо от размера и т. д.