There seems to be interest out there in the code for generating Latex tables from Fortran that I described in an earlier post, so I went back and took a look at it again. I realized, not unexpectedly, that I could make some improvements, so I did.
One improvement that I made is to make the call to writing out the table generic. That way, we don’t have to rememember the specific subroutine calls. I left the specific routines public, so old code does not need to be modified. Now, a table from an array of real, double precision or integers can be created with a generic call:
TYPE(LatexTableMaker) :: TMaker
REAL(KIND(1.0d0)) :: tableData(4,5) ! Stored as (rows,columns)CALL TMaker % writeTableAsLatex(tableData = tableData, &
headers = [“first ”,”second”,…,”last ”], &
caption = “Prize Winning Results", &
label = “tab:PWR", &
fileUnit = 6)
Similarly, you can use tableColumns the same way:
CALL TMaker % writeTableAsLatex( &
tableColumnsArray = arrayOfColumns, &
caption = caption, &
label = label, &
fileUnit = 6)
On the other hand, I did make one change that requires changes to existing code. I changed newLatexTableColumn to be called constructLatexTableColumn because I think that name more accurately describes what the procedure does. See the example code for the new calls.
Finally, I added the ability to transpose the table by writing the columns as rows instead. This is how I’ll write non-homogeneous rows. Transposing is done by including the optional “transpose” argument in the call:
CALL TMaker % writeTableAsLatex( &
tableColumnsArray = arrayOfColumns, &
caption = caption, &
label = label, &
fileUnit = 6, &
transpose = .TRUE.)
As before, you can get the code from my “Free Fortran” page and the manual can be found here.