18 lines
687 B
Plaintext
18 lines
687 B
Plaintext
WidestFitDimensions[
|
|
targetWidth_Integer,
|
|
columnSpacings_Integer,
|
|
leftRightBorderWidths:{_Integer,_Integer},
|
|
data:{__List?MatrixQ}]:=
|
|
With[
|
|
{widths=Last/@Dimensions/@data,
|
|
fullWidthOfRow=Total[ArrayPad[Riffle[#,columnSpacings],leftRightBorderWidths,1]]&},
|
|
With[
|
|
{fullWidthOfGrid=Max[fullWidthOfRow/@#]&},
|
|
With[
|
|
{isTooLarge=(targetWidth<fullWidthOfGrid[#])&},
|
|
With[
|
|
{bestFitGrid=
|
|
NestWhile[Partition[widths,-1+Last@Dimensions@#,-1+Last@Dimensions@#,{1,1},0]&,
|
|
{widths},isTooLarge[#]&,1,-1+Length@widths]},
|
|
<|"dimensions"->Dimensions@bestFitGrid,"width"->fullWidthOfGrid@bestFitGrid|>]]]];
|