Graphviz ignora el atributo de tamaño (página A4)

Considere el siguiente gráfico de ejemplo mínimo que debe caber en una página A4

digraph G{
size="8.3,11.7!" ratio=fill;
foo->bar;
}

Compilar conneato -Tpdf -o min_ex.pdf min_ex.gv El archivo pdf resultante tiene dimensiones de 236 mm x 115 mm y no, como se esperaba, 210 mm x 297 mm.

Graphviz ignora este atributo para los gráficos que son más pequeños que la página (como este) y los que deben reducirse para ajustarse.

He probado alguna combinación desize yratio Atributos, no consigo que el gráfico se ponga en una página A4 con ninguno de ellos.

Entonces, ¿qué tengo que especificar para que el gráfico se coloque siempre en una página A4, independientemente de su tamaño?

Documentación:

tamaño:

Máxima anchura y altura de dibujo, en pulgadas. Si solo se da un solo número, esto se usa tanto para el ancho como para la altura.

Si se define y el dibujo es más grande que el tamaño dado, el dibujo se reduce de manera uniforme para que se ajuste al tamaño dado.

Si el tamaño termina en un signo de exclamación (!), Se toma como el tamaño deseado. En este caso, si ambas dimensiones del dibujo son menores que el tamaño, el dibujo se escala de manera uniforme hasta que al menos una dimensión sea igual a su dimensión en tamaño.

proporción

Establece la relación de aspecto (altura de dibujo / ancho de dibujo) para el dibujo. Tenga en cuenta que esto se ajusta antes de que se apliquen las restricciones de atributo de tamaño. Además, los cálculos generalmente ignoran los tamaños de los nodos, por lo que el tamaño del dibujo final solo puede aproximarse a lo que se desea.

Si la relación es numérica, se toma como la relación de aspecto deseada. Luego, si la relación de aspecto real es menor que la relación deseada, la altura del dibujo se escala para alcanzar la relación deseada; Si la relación real es mayor que la deseada, el ancho del dibujo se incrementa.

Si ratio = "relleno" y se establece el atributo de tamaño, las posiciones de los nodos se escalan, por separado, tanto en x como en y, de modo que el dibujo final llene exactamente el tamaño especificado. Si ambos valores de tamaño exceden el ancho y el alto del dibujo, entonces los dos valores de coordenadas de cada nodo se escalan en consecuencia. Sin embargo, si cualquiera de las dimensiones de tamaño es más pequeña que la dimensión correspondiente en el dibujo, una dimensión se escala para que el dibujo final tenga la misma relación de aspecto que especifica el tamaño. Luego, cuando se procesa, el diseño se reducirá uniformemente en ambas dimensiones para adaptarse al tamaño dado, lo que puede hacer que los nodos y el texto también se reduzcan. Es posible que esto no sea lo que quiere el usuario, pero evita el difícil problema de cómo reposicionar los nodos de una manera aceptable para reducir el tamaño del dibujo.

Si ratio = "comprimir" y el atributo de tamaño está establecido, el punto intenta comprimir el diseño inicial para que se ajuste al tamaño dado. Esto logra un empaquetamiento más apretado de nodos, pero reduce el equilibrio y la simetría. Esta característica solo funciona en punto.

Si ratio = "expandir", se establece el atributo de tamaño, y tanto el ancho como la altura del gráfico son menores que el valor en tamaño, las posiciones de los nodos se escalan uniformemente hasta que al menos una dimensión se ajuste exactamente al tamaño. Tenga en cuenta que esto es distinto de usar tamaño como el tamaño deseado, ya que aquí el dibujo se expande antes de que se generen los bordes y todos los tamaños de nodo y texto permanezcan sin cambios.

Si ratio = "auto", el atributo de la página se establece y el gráfico no se puede dibujar en una sola página, entonces el tamaño se establece en un valor "ideal". En particular, el tamaño en una dimensión dada será el múltiplo integral más pequeño del tamaño de página en esa dimensión que es al menos la mitad del tamaño actual. Las dos dimensiones se escalan de forma independiente al nuevo tamaño. Esta característica solo funciona en punto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta