Estou tentando juntar vários diagramas em uma espécie de mesa. Eu acho que isso é chamado de "impressão de índice" , as pessoas que fazem fotografia fazem isso quando precisam revisar muitas fotografias ao mesmo tempo. Enfim, este é o código:
main :: IO ()
main = mainWith @(Diagram B)
$ (tile . fmap renderOne) examples
renderOne :: AnyGraph -> Diagram B
renderOne (AnyGraph gr) = ...
tile :: [Diagram B] -> Diagram B
tile xs = let columns = (ceiling . sqrt . fromIntegral . length) xs
in (vcat . fmap hcat . List.chunksOf columns) xs
Não funciona como eu esperava. Mas vamos abordá-lo gradualmente. Primeiro, aqui está uma renderização de um único bloco:
Agora, vamos hcat
quatro peças juntas.
Adicione uma segunda linha: (Veja como os recursos invariantes da escala aumentam.)
E é assim que fica com 4 linhas:
Fora de mão!
Parece-me que recursos invariantes à escala, como pontas de setas, são dimensionados proporcionalmente à área da imagem. Mas, neste caso, preciso aumentar meu diagrama sem redimensionar esses recursos. Como posso conseguir isso?