
Quero desenhar paralelogramos com ângulo, largura e altura fixos, mas parece que trapezium
no PGF/TikZ não é possível especificar a altura sem alterar os ângulos.
\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 saída:
Quero uma versão verticalmente gorda de A com a mesma largura.
A e B têm ângulos diferentes, basta adicionar "altura mínima". A versão girada de A tem lados verticais oeste/leste, é disso que eu preciso. A versão girada de B não tem lados verticais oeste/leste, no entanto, preciso de um paralelogramo "mais alto" com os mesmos ângulos e largura de A.
C: Removendo "trapézio alonga o corpo"resulta em um paralelogramo cuja largura e altura estão fora de controle. D: Substituir "trapézio estica corpo" por "alongamentos de trapézio"não ajuda em nada.
Responder1
Talvez o seguinte possa explicar melhor o que está acontecendo. O estranho que acontece quando o texto fica mais curto e o nó fica mais alto e mais curto à medida que o texto fica mais longo é devido às restrições serem respeitadas.
\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}
Vemos que a largura mínima e a altura mínima são respeitadas e então se houver espaço o nó vai ficando mais alto porque não há restrição para isso. Em outras palavras, há apenas restrição nos mínimos e não nos máximos, portanto, no exemplo inferior, os mínimos são respeitados e então os ângulos são tentados para corresponder. Se o nó for mais curto e os ângulos forem fixos então a altura mínima não será respeitada etc. Portanto, para isso são propostas algumas opções nomeadamente as opções de estiramento. Se transformarmos todas as chaves falsas em verdadeiras, obteremos
Assim, o anjo da forma é deformado para cumprir as restrições. Da mesma forma, a trapezium stretches body
chave apenas estica a largura. Mas se o ângulo estiver definido, é uma questão de respeitar as restrições e depois verificar se o ângulo é viável. Portanto, é necessário um tipo diferente de restrição. Isso pode ser usar rótulos na center
âncora ou desenhá-los no topo dos nós, independentemente do tamanho, etc.